Ashu S
Ashu S

Reputation: 21

issue in Parsing Json object using Jquery

I have following JSON object.

{
    "newArrival": {
        "head": {
            "name": "New Arrivals",
            "url": "/new-arrivals/"
        },
        "banner": [
            {
                "name": "Lee Cooper",
                "url": "/Lee_Cooper/",
                "src": "http://indfas1.images.com/images/abc/menu/new-arrival-lee-cooper-1.jpg",
                "alt": "",
                "title": ""
            },
            {
                "name": "Ray Ban",
                "url": "/Ray-Ban/",
                "src": "http://indfas1.images.com/images/abc/menu/new-arrival-ray-ban-1.jpg",
                "alt": "",
                "title": ""
            },
            {
                "name": "Vero Moda",
                "url": "/vero-moda/",
                "src": "http://indfas1.images.com/images/abc/menu/new-arrival-vero-moda-1.jpg",
                "alt": "",
                "title": ""
            }
        ]
    }
}

I want to read head and banner tags value. I'm using following Jquery code:

$.each(json.newArrival, function (i, newArr) {
    $.each(newArr, function (index, value) {
        alert(value);
    }); 
});

But, I'm not able to read head and banner in any way.

Anybody Please help!!

Thanks a lot in advance.

-- Ashu

Upvotes: 0

Views: 103

Answers (4)

johan mårtensson
johan mårtensson

Reputation: 185

The code you have "works" as is. However, there is a difference between how you will have to access head data and banner data.

Because head is an object, your inner each will iterate over its members, i.e. newArrival.head.name and newArrivale.head.url.

Because banner is an array, you will be iterating over objects. If you then each through those objects, you will be accessing name, url, src etc.

Thus, what you have should alert, in sequence New Arrivals, /new-arrivals/, [Object object], [Object object], [Object object]

Why not directly access the members of newArrival.head (if you need them) and then iterate over newArrival.banner with

alert(json.newArrival.head.name);
alert(json.newArrival.head.url);
$.each(json.newArrival.banner, function (i, newArr) {
    $.each(newArr, function (index, value) {
        alert(value);
    });
});

Upvotes: 1

ranjeet
ranjeet

Reputation: 540

Try This ..

var JsonObj = Say yourValues
var headObj = JsonObj.newArrival.head; //head json values 
var bannerObj = JsonObj.newArrival.banner; //banner json Values

Say you want to access bannerObj first name...

 alert(bannerObj [0].name); 

Upvotes: 0

Try with this one

var data = JSON.stringify({
"newArrival": {
    "head": {
        "name": "New Arrivals",
        "url": "/new-arrivals/"
    },
    "banner": [
        {
            "name": "Lee Cooper",
            "url": "/Lee_Cooper/",
            "src": "http://indfas1.images.com/images/abc/menu/new-arrival-lee-cooper-1.jpg",
            "alt": "",
            "title": ""
        },
        {
            "name": "Ray Ban",
            "url": "/Ray-Ban/",
            "src": "http://indfas1.images.com/images/abc/menu/new-arrival-ray-ban-1.jpg",
            "alt": "",
            "title": ""
        },
        {
            "name": "Vero Moda",
            "url": "/vero-moda/",
            "src": "http://indfas1.images.com/images/abc/menu/new-arrival-vero-moda-1.jpg",
            "alt": "",
            "title": ""
        }
    ]
}
})


 var data1 = JSON.parse(data) 

 console.log(data1.newArrival.head.name)
 console.log(data1.newArrival.head.url)

 console.log(data1.newArrival.banner[0].name)
 console.log(data1.newArrival.banner[0].url)
 console.log(data1.newArrival.banner[0].src)
 console.log(data1.newArrival.banner[0].src)

This will help you

Upvotes: 0

Bhadra
Bhadra

Reputation: 2104

go to which ever node you want in place of json.newArrival.banner

$.each(json.newArrival.banner, function (i, newArr) {
    alert(newArr.name);
});

fiddle

Upvotes: 0

Related Questions