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.
Open your firebug's console, paste the following and execute:
Now, as you will have two objects under the second level of your JSON, you need to specify the object and then you will see that it will allow you to select its properties:
Before working with the dynamically generated JSON, get some dummy data for testing purposes (with the same structure, of course) and play with it before implementing the final code.
I used tempo.js rendering engine, it does multidimensional array rendering. here is the link http://tempojs.com/
download tempo.cs and follow the link .
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":