user3709532
user3709532

Reputation: 33

jQuery: Get JSON error

I'm trying to get certain elements from a JSON file but I'm just not able to do so, I've tried different ways, this is the JSON file:

// data.json
{
    "stuff": [
        {
            "userId": 1,
            "date": "19 Oct 2014",
            "content": "#New Hello on g.co/ABC",
            "entities": {
                "hashtags": ["#New"],
                "urls": ["g.co/ABC"]
            }
        }
    ],
    "user": {
        "avatar": "/assets/avatar.jpg",
        "name": "Daniel"
    }
}

Now my jQuery code is:

$(document).ready(function(){
    $.getJSON('data.json', function(data) {
        //console.log(data);

        $.each(data,function(i,item){
            console.log(item.stuff.content); // I want to print 'content'
        });
    });
});

And all I get is an Uncaught error type:

enter image description here

What am I doing wrong? Thanks in advance

Upvotes: 2

Views: 68

Answers (3)

Ibrahim Khan
Ibrahim Khan

Reputation: 20750

You json data is not an array. so you don't need to use each. But stuff is an array so take it's specific index or loop through it.

$(document).ready(function(){
    $.getJSON('data.json', function(data) {
         console.log(data.stuff[0].content); 

         //or loop through like 
         //$.each(data.stuff,function(i,item){
         //   console.log(item.content);
         //});     
    });
});

Upvotes: 2

Jonathan Maddox
Jonathan Maddox

Reputation: 41

This should work:

$.getJSON('data.json', function(data) {
   console.log(data['stuff'][0]['content']);
}

It is getting the stuff element of the JSON object then the first element of that pair, since the pair of key "stuff" is an array of JSON Objects. Then from that last JSON object, its grabbing content.

Upvotes: 2

Anik Islam Abhi
Anik Islam Abhi

Reputation: 25352

stuff is an array of object.

To access item of an array you have to access it via index

like this

console.log(data.stuff[0].content);

JSFIDDLE

May be you are iterating an object instead of array of object

If data is an object then try like this

$.each(data.stuff,function(i,item){
    console.log(item.content);
});

JSFIDDLE

Upvotes: 5

Related Questions