Dannyboy1430
Dannyboy1430

Reputation: 135

JSON.parse parsing JSON with nested objects

I'm attempting to parse a JSON string with nested objects received in the response of a post request. After running JSON.parse(responseText), the result is in the following format:

[{
  "atco":"43000156407",
  "location":{
    "longitude":"-1.7876500000000000",
    "latitude":"52.4147200000000000","
    timestamp":"2013-03-19 11:30:00"
   },
  "name":"Solihull Station Interchange",
  "road":"STATION APPROACH",
  "direction":"NA",
  "locality":"Solihull",
  "town":"Solihull"}, ...

I thought I would then be able pull values out using the following as an example, but all I get is undefined.

var atco = json[0].atco;

I've also tried json[0][0] but that returns an individual character from the JSON ([) . Does this indicate the JSON hasn't parsed correctly, or is this expected behaviour and I'm just referencing incorrectly?

Upvotes: 13

Views: 35727

Answers (1)

user1106925
user1106925

Reputation:

This means that your JSON is being double encoded. Make sure you only encode it once on the server.

As proof, after you've parsed it, parse it again.

var parsed = JSON.parse(resposneText);

var parsed2 = JSON.parse(parsed);

alert(parsed2.atco);

Either that, or you're parsing it but then trying to select the data from the original string. This would obviously not work.

Upvotes: 18

Related Questions