2013-04-14 176 views
8

我试图解析一个JSON字符串与嵌入的对象收到一个post请求的响应。运行JSON.parse(responseText)后,结果是按以下格式:JSON.parse解析嵌套对象的JSON

[{ 
    "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"}, ... 

我想,那么我会使用以下作为一个例子能够拉出来的值,但我得到的是不确定的。

var atco = json[0].atco; 

我也试过json[0][0]但是从JSON([)返回的个性。这是否表明JSON没有正确解析,还是这种预期的行为,我只是不正确地引用?

+0

你必须引用你如何解析它。如果JSON真的如图所示,那么'json [0] .atco'是访问数组中第一个入口的'atco'属性的正确方法。这让我们猜测发生了什么问题,这对任何人都没有用。 :-) –

+0

请写出compelete json脚本。 – ncm

+0

如果json指向那个对象,就像你写的那样,它会工作:http://jsfiddle.net/XmchJ/还有其他的事情,我怀疑“我不是”是否想出了 –

回答

10

这意味着您的JSON正在被双重编码。确保你只在服务器上编码一次。

作为证明,在你解析它之后,再次解析它。

var parsed = JSON.parse(resposneText); 

var parsed2 = JSON.parse(parsed); 

alert(parsed2.atco); 

要么,你分析它,但随后试图从原来的字符串选择数据。这显然不起作用。

+0

谢谢,这是在PHP脚本中被双重编码。 – Dannyboy1430

+0

@ Dannyboy1430:不客气。 – 2013-04-14 21:50:30