2016-05-17 61 views
-4

我尝试通过以下JSON.parse不会产生对象

{ “1” 我的字符串数组正确:{ “11”:{ “cityid”:1, “BPID”:11, “name”:“Golden Mile Tower”,“time”:“+ 00:00”,“sbpid”:50043}},“2”:{“34”:{“cityid”:2,“bpid” 34,“name”:“KL Sentral”,“time”:“+ 00:00”,“sbpid”:50040}},“8”:{“244”:{“cityid”:8,“bpid” :244, “名”: “塔曼 斯公主”, “时间”: “+ 00”, “sbpid”:50042}}}

console.log(JSON.parse(str)) 

它不会成为世界卫生大会T I指望像下面

enter image description here

任何想法,为什么?

+0

您的字符串无法使用纯json解析器转换为图像。 – Justinas

+1

它不解析为包含3个元素的数组 - 它将其解析为具有三个属性的对象,因为这就是编码数据的内容。 – Andy

+0

@为了达到图像中显示的结果,我做了什么? – Jennifer

回答

1

它无法产生正确的数组,因为你没有它。

您有ObjectArray

这是阵列,导致它从索引1开始:

{ 
    "1":{"11":{"cityid":1,"bpid":11,"name":"Golden Mile Tower","time":"+00:00","sbpid":50043}}, 
    "2":{"34":{"cityid":2,"bpid":34,"name":"KL Sentral","time":"+00:00","sbpid":50040}}, 
    "8":{"244":{"cityid":8,"bpid":244,"name":"Taman Sri Puteri","time":"+00:00","sbpid":50042}} 
} 

,这是阵列:

[ 
    {"11":{"cityid":1,"bpid":11,"name":"Golden Mile Tower","time":"+00:00","sbpid":50043}}, 
    {"34":{"cityid":2,"bpid":34,"name":"KL Sentral","time":"+00:00","sbpid":50040}}, 
    {"244":{"cityid":8,"bpid":244,"name":"Taman Sri Puteri","time":"+00:00","sbpid":50042}} 
] 

用于转换ObjectArray使用循环,如:

var arr = []; 
for(var a in your_object){ 
    arr.push(a); 
} 
+0

所以我必须将对象转换为数组? – Jennifer

+0

这意味着您的后端工作不正确,或者您可以使用对象工作,或者您可以通过循环将其转换为数组 – xAqweRx

+0

不,我从DOM抓取,它必须是这样的。 – Jennifer

0

JSON.parse将仅解析字符串,所以您提供的对象不会解析对象。所以用单引号包装你的对象。

我在开始和最后添加了单引号。现在你可以检查。它会返回数组。 JSON.parse('{“1”:{“11”:{“cityid”:1,“bpid”:11,“name”:“Golden Mile Tower”,“time”:“+ 00: 00“,”sbpid“:50043}},”2“:{”34“:{”cityid“:2,”bpid“:34,”name“:”KL Sentral“,”time“ 00“,”sbpid“:50040}},”8“:{”244“:{”cityid“:8,”bpid“:244,”name“:”Taman Sri Puteri“,”time“ :00" , “sbpid”:50042}}}');