2013-03-30 3 views
2

Я проанализировал строку json, и я пытаюсь получить доступ к элементам. Я не могу получить доступ к LINK1, LINK2, link3«Объект Object» или undefined возвращен при доступе к элементам JSON

{ 
"click_title":"GO", 

"links": 

    { 

    "commonlink":"http:\/\/bookings.com", 

    "alllinks": 
     [ 
     [ 
      { 

       "link1":"http:\/\/xyz1.com\/get\/a", 

       "link2":"http:\/\/www.anotherwebsite1.com\/c\/t", 

       "link3":"http:\/\/www.newsite1.com\/v\/h" 
      }, 

      { 

       "link1":"http:\/\/xyz2.com\/get\/a", 

       "link2":"http:\/\/www.anotherwebsite2.com\/c\/t", 

       "link3":"http:\/\/www.newsite2.com\/v\/h" 

      } 
     ], 

     [ 
      { 

       "link1":"http:\/\/xyz3.com\/get\/a", 

       "link2":"http:\/\/www.anotherwebsite3.com\/c\/t", 

       "link3":"http:\/\/www.newsite3.com\/v\/h" 
      } 
     ] 
     ] 
    } 
} 

вар данных = $ .parseJSON (dbData);

Я могу получить доступ к click_title и commonlink с помощью этого: -

data.click_title 
data.links['commonlink'] 

, но не в состоянии получить доступ к LINK1, link2, link3. Я попытался

data.links['alllinks'] which returns [object Object]. 

Если я пытаюсь

data.links['alllinks']['link1'] i get undefined 
+0

Если вы перестали использовать оповещения для отладки и начали использовать консоль, вы фактически увидите структуру объектов вместо '[object, object]'. – adeneo

+0

Я не использую предупреждение –

ответ

1

Структура очень странно. alllinks - массив массивов объектов (обратите внимание на [ и второй [ после "alllinks":, каждый из которых запускает массив). Для того, чтобы получить в первыйlink1 в первого массива, вы могли бы сделать:

var link = data.links.alllinks[0][0].link1; 

Это легче увидеть, что если вы форматировать JSON последовательно. Здесь я использовал http://jsonlint.com, чтобы очистить его, а затем я добавил некоторые комментарии (не то, что комментарии действительны в формате JSON):

{ 
    "click_title": "GO", 
    "links": { 
     "commonlink": "http://bookings.com", 
     "alllinks": [ // <== Starts the outer array 
      [   // <== Starts an inner array 
       {  // <== Starts the object that's the first entry 
        "link1": "http://xyz1.com/get/a", 
        "link2": "http://www.anotherwebsite1.com/c/t", 
        "link3": "http://www.newsite1.com/v/h" 
       }, 
       {  // <== Starts the object that's the second entry 
        "link1": "http://xyz2.com/get/a", 
        "link2": "http://www.anotherwebsite2.com/c/t", 
        "link3": "http://www.newsite2.com/v/h" 
       } 
      ],  // <== Ends the first inner array 
      [   // <== Starts the second inner array 
       { 
        "link1": "http://xyz3.com/get/a", 
        "link2": "http://www.anotherwebsite3.com/c/t", 
        "link3": "http://www.newsite3.com/v/h" 
       } 
      ]   // <== Ends the second inner array 
     ]    // <== Ends the outer array 
    } 
} 

Таким образом, в общей сложности, у вас есть три link1 «S: один на объект на [0][0], тот, который находится на объекте [0][1], а другой - на объекте [1][0].

Смежные вопросы