2015-10-25 2 views
1

Как я могу получить доступ к объектам, которые находятся внутри массива, который сам находится внутри объекта JSON?Как я могу получить доступ к массиву объектов в объекте JSON?

JSON Структура:

{ 
    "name":"animals", 
    "type":"farmyard", 
    "version": "1.0", 

    "items": [{ 
     { 
      "name": "pig", 
      "description": "pink, round" 
     }, 

     { 
      "name": "chicken", 
      "description": "small, yellow" 
     } 
    }] 

} 

А вот JS до сих пор ...

$.getJSON("https://_LINK_TO_JSON.json", function(data) { 

     var farm = []; 
     var animals = []; 

     $.each(data, function(key, val) { 

     farm.push(key, val); 

     var animals = farm[3]; 
     console.dir(animals); 

     }); 

     console.dir(animals); 

    }); 

Я пытался использовать farm.items целевой массив, но Didn Я работаю, поэтому вместо этого я использовал номер индекса.

(естественно, используя farm.items[1].name целевой первое имя не работает.)

Есть причина, почему я не могу просто использовать точечную нотацию что-то делать с тем фактом, что JSON keys и values находятся в пределах предложения Метки? (Я не могу редактировать JSON-канал, поскольку он является внешним).

Как я могу просто нацелить вложенный массив и захватить элементы, которые я хочу, и их свойства?

+0

Это недействительно JSON. Внешний уровень '{}' в массиве «items», вероятно, является опечаткой. Если это так, то повторение с помощью 'data.items' даст вам доступ к элементам массива. – Pointy

ответ

1

вы можете использовать $ eaach функции JQuery, как

$.getJSON (urltoJSON, function(data){ 
$.each(data.response.venue.items, function (index, value) { 
    console.log(this.name); 
    console.log(this.description); 
}); 
}); 

также вы можете сохранить JSON в Java-переменного и итерации над ним как

data= 'get ur json' 
for (i in data.items) { 
    console.log (i.name + "") 
    console.log (i.description + "");  
    } 
+0

Это на самом деле решило его. Мне удалось получить доступ к вложенному массиву и консольному журналу некоторых свойств :) – jx3

+0

Странно, у меня есть все, проходящее через все и работающее в 'console.logs', однако когда я это делаю:' $ ('.container'). html ('

  • ' + '' + this.name + '
  • '); 'он просто выплевывает последний объект и ничего больше? – jx3

    +0

    ОК, понял, что петли работают нормально. Он работает только с первым элементом, а затем дает мне значение «/ null», а затем 404s для двух последующих объектов? Это связано с тем, как я делаю запрос? – jx3

    0

    ваш результат, имеющий значение JSon, как показано ниже

    { 
        "name":"animals" 
    } 
    
    $.each(result, function() 
    {   
         alert(result.name); 
    } 
    

    Приведенный выше код будет оповещать «животных».

    , если у вас есть несколько имя, которое вы можете использовать «я»

    $.each(result, function(i) 
    {    
         alert(result[i].name); 
    } 
    
    2

    У вас есть ошибка в вашей структуре JSON. Ваш JSON должен быть:

    var data = { 
        'name':'animals', 
        'type':'farmyard', 
        'version': '1.0', 
    
        'items': [ 
         { 
          'name': 'pig', 
          'description': 'pink, round' 
         }, 
    
         { 
          'name': 'chicken', 
          'description': 'small, yellow' 
         } 
        ] 
    
    }; 
    
    console.log(data.items); 
    

    Попробуйте http://jsfiddle.net/6uhp6y34/

    +0

    Ах, ладно, спасибо. ОК, поэтому ошибка с внешним JSON удерживает меня! :( – jx3

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