Shinu Thomas
Shinu Thomas

Reputation: 5316

Parse json array using javascript

I have a json arry

    var students = {"apResults":[{"offid":"267","item_name":"","offer_name":"fsdfsf","stlongitude":"77.5945627","stlatitude":"12.9715987"},

{"offid":"265","item_name":"","offer_name":"vess offer shops","stlongitude":"","stlatitude":""},

{"offid":"264","item_name":"","offer_name":"vess ofer  shop","stlongitude":"","stlatitude":""},
{"offid":"263","item_name":"","offer_name":"ofer frm vess","stlongitude":"77.5943760","stlatitude":"12.9716060"},
{"offid":"262","item_name":"","offer_name":"offer hungamma","stlongitude":"77.5943760","stlatitude":"12.9716060"},
{"offid":"261","item_name":"","offer_name":"offer hungamma","stlongitude":"77.5943760","stlatitude":"12.9716060"},
{"offid":"260","item_name":"","offer_name":"offer1","stlongitude":"77.5943760","stlatitude":"12.9716060"},
{"offid":"259","item_name":"","offer_name":"offer","stlongitude":"77.5943760","stlatitude":"12.9716060"}]}

How i can parse this json arry using json.parse. I have tried this code

    for(i=0;i<students.apResults.length;i++)
{
    var contact = JSON.parse(students.apResults);
    var offid = contact.offid;
    alert(offid)    
}

But its giving an error JSON.parse: unexpected character.Edited my question

Upvotes: 4

Views: 49909

Answers (7)

mx0
mx0

Reputation: 7143

You can't parse students because is not a JSON. It's simple object.

However this will work:

var students = JSON.stringify(students); // if you want to send data

students = JSON.parse(students); // after receiving make a object from it

//use like any object    
for(i=0;i<students.Maths.length;i++)
{
    var contact = students.Maths[i];
    var fullname = contact.Name;
    alert(fullname) 
}

Of course it doesn't make sense to write it that way unless you send students data to other site or program.

Edit: You don't need JSON in this code at all. But if you want to test JSON.parse() do it this way:

var students = { ... } // your data

var students = JSON.stringify(students); // students is `object`, make it `string`

students = JSON.parse(students); // now you can parse it, `students` is object again 

for(i=0;i<students.apResults.length;i++) {
    var contact = students.apResults; // no JSON
    var offid = contact.offid;
    alert(offid)    
}

That should work.

Upvotes: 2

Shinu Thomas
Shinu Thomas

Reputation: 5316

for(i=0;i<students.apResults.length;i++)
{

    var contact = JSON.parse(students.apResults[i].offid);

    alert(contact)  
}

Upvotes: 4

Joseph
Joseph

Reputation: 119887

JSON parses strings, not objects/arrays.

why need parsing when you can access it like students.Maths[i].Name

Upvotes: 3

SkonJeet
SkonJeet

Reputation: 4915

The idea of JSON is for the exchange of objects represented as a structured string (in a nutshell). What you've got there is simply an object. It's unnecessary (and impossible) to parse and object that isn't JSON into a javascript object; what you have is the outcome of what you would expect from a parsed JSON string.

Upvotes: 0

jose
jose

Reputation: 2543

What you have is a javascript object. So, you won't need the JSON.parse

for(i=0;i<students.Maths.length;i++)
{
    var contact = students.Maths[i]);
    var fullname = contact.Name;
    alert(fullname) 
}

this should be ok

Upvotes: 1

ZER0
ZER0

Reputation: 25332

students is not a JSON array, it's an actual array. You don't have to parse because it's not a string. So you can access directly to the data you need:

for(i=0;i<students.Maths.length;i++) {
    var contact = students.Maths[i];
    var fullname = contact.Name;
    alert(fullname) 
}

Upvotes: 2

Evert
Evert

Reputation: 99851

That's not a json string, that's a regular javascript variable:

for(i=0;i<students.Maths.length;i++)
{
    var contact = students.Maths[i];
    var fullname = contact.Name;
    alert(fullname) 
}

Upvotes: 7

Related Questions