So I fetch a multidimensional JSON array with getJSON and I want to access values in the array, but can't reach longer than the first element in the array.
"producers",
[
{
"producer":{
"id":"1",
"name":"Em\u00e5mejeriet",
"address":" Grenv\u00e4gen 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",
...and so on.
My code:
$.getJSON("/url/producers.json", function(data) {
$.each(data, function() {
$.each(this, function(key, value) {
console.log(value.producer);
});
});
});
The output is an object, I don't know any better way to paste it, copied from the browsers console: "> Object {id: "1", name: "Emåmejeriet", address: "Grenvägen 1-3, zipcode: "577 39", disctrict: "Hulsfred"...}
I've searched and tested different approaches as I said, from this forum, but couldn't get my head around it.
If the output of value.producer
is an object, then you should be able to access the properties of that object. For example, value.producer.name
should output 'asdfsadf'.
UPDATE
It looks as though your json data is not valid. (I'm assuming "producers" is a property of the data object and the value of that property is an array of all of the "producer" objects.)
I've created this fiddle ( http://jsfiddle.net/kAsPm/ ) and it works as expected. I just had to change the comma to a colon after "producers":
"producers": // changed from "producers",
[
{
"producer":{
"id":"1",
...