Как получить доступ к значениям в многомерном массиве JSON с помощью jQuery
Поэтому я извлекаю многомерный массив JSON с помощью getJSON и хочу получить доступ к значениям в массиве, но не могу достичь большего, чем первый элемент в массиве.
"producers",
[
{
"producer":{
"id":"1",
"name":"Emu00e5mejeriet",
"address":" Grenvu00e4gen 1-3",
"zipcode":" 577 39",
"district":" Hultsfred",
"webpage":"http://www.emamejeriet.se",
"logoURL":"../producenter/images/ema.png",
"latitude":"57.4999",
"longitude":"15.828"
}
},
{
"producer":{
"id":"2",
...и так далее.
Мой код:
$.getJSON("/url/producers.json", function(data) {
$.each(data, function() {
$.each(this, function(key, value) {
console.log(value.producer);
});
});
});
Вывод-это объект, я не знаю лучшего способа вставить его, скопированный из консоли браузеров: "> Object {id: "1", name: "Emåmejeriet", address: "Grenvägen 1-3, zipcode: "577 39", disctrict: "Hulsfred"...}
Я искал и тестировал различные подходы, как я уже сказал, С этого форума, но не мог собраться с мыслями.
3 ответа:
Если вывод
value.producer
является объектом, то вы должны иметь доступ к свойствам этого объекта. Например,value.producer.name
должно вывести 'asdfsadf'.Обновить
Похоже, что ваши данные json недействительны. (я предполагаю, что "производители" - это свойство объекта данных, а значение этого свойства-массив всех объектов" производителя".)
Я создал эту скрипку ( http://jsfiddle.net/kAsPm/) и он работает, как и ожидалось. Я просто пришлось заменить запятую на двоеточие после "производителей":
"producers": // changed from "producers", [ { "producer":{ "id":"1", ...
Откройте консоль firebug, вставьте следующее и выполните:
var json = '{' + '"peopleList":[' + '{"id":1,"name":"marcelo","address":"rua meh","phone":"85 99999999"},'+ '{"id":2,"name":"marcelo2","address":"rua meh2","phone":"85 9999.9999"}]}'; var parsed = JSON.parse(json);
Теперь, поскольку у вас будет два объекта под вторым уровнем вашего JSON, вам нужно указать объект, и тогда вы увидите, что он позволит вам выбрать его свойства:
parsed.peopleList[0].name
Прежде чем работать с динамически генерируемым JSON, получите некоторые фиктивные данные для целей тестирования (с той же структурой, конечно) и поиграйте с ними перед реализацией окончательного кода.
Я использовал темп.JS rendering engine, он выполняет рендеринг многомерных массивов. вот эта ссылка http://tempojs.com/
Скачать tempo.cs и перейдите по ссылке .