JSON。使用嵌套对象解析JSON

时间:2021-07-01 19:43:52

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:

我试图用在post请求响应中收到的嵌套对象解析JSON字符串。在运行JSON.parse(responseText)之后,结果如下:

[{
  "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?

我也尝试过json[0][0],但是它会从json([)返回一个单独的字符。这是否表明JSON没有正确解析,或者这是预期的行为,而我只是引用的不正确?

1 个解决方案

#1


10  

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

这意味着JSON是双编码的。确保只在服务器上对其进行一次编码。

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.

或者解析它,然后尝试从原始字符串中选择数据。这显然行不通。

#1


10  

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

这意味着JSON是双编码的。确保只在服务器上对其进行一次编码。

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.

或者解析它,然后尝试从原始字符串中选择数据。这显然行不通。