0

我从 Disqus 得到以下(str),预期为 JSON:

?({"code": 0, "response": {"username": "FakeGrimlock", "about": "ME GIANT ROBOT DINOSAUR。为启动编写代码。吃无聊或愚蠢的人。喝咖啡和啤酒。" ,“名称”:“假钢锁”,“网址”:“ http://WWW.FAKEGRIMLOCK.COM ”,“profileUrl”:“ http://disqus.com/FakeGrimlock/ ”,“emailHash”:“07bb07626b48f05c093d70fb69ef8a76” ,“头像”:{“永久链接”:“ http://disqus.com/api/users/avatars/FakeGrimlock.jpg ”,“缓存”:“ http://mediacdn.disqus.com/uploads/users/437 /9401/avatar92.jpg?1313888496 "}, "isAnonymous": false, "id": "4379401"}});

所以我修复它...

str='[' + str.substr(2, str.length-4) + ']'

这给了我们这个:

[{“code”:0,“response”:{“username”:“FakeGrimlock”,“about”:“ME GIANT ROBOT DINOSAUR。为启动编写代码。吃无聊或愚蠢的人。喝咖啡和啤酒。”, “名称”:“假钢锁”,“网址”:“ http://WWW.FAKEGRIMLOCK.COM ”,“profileUrl”:“ http://disqus.com/FakeGrimlock/ ”,“emailHash”:“07bb07626b48f05c093d70fb69ef8a76”, “头像”:{“永久链接”:“ http://disqus.com/api/users/avatars/FakeGrimlock.jpg ”,“缓存”:“ http://mediacdn.disqus.com/uploads/users/437/ 9401/avatar92.jpg?1313888496 "}, "isAnonymous": false, "id": "4379401"}}]

...它在 JSONLINT 处传递,然后尝试将其放入此处的对象中...

var obj=JSON.parse(str);

console.log(obj) 显示:

[ {代码:0,响应:{用户名:'FakeGrimlock',关于:'ME GIANT ROBOT DINOSAUR。为启动编写代码。吃无聊或愚蠢的人。喝咖啡和啤酒。',名称:'FAKE GRIMLOCK',url: 'http ://WWW.FAKEGRIMLOCK.COM',profileUrl:' http ://disqus.com/FakeGrimlock/',emailHash:' 07bb07626b48f05c093d70fb69ef8a76 ',头像:[对象], isAnonymous:假,id:'4379401' } } ]

然后它在这里失败了:

console.log(obj.response[0])// response is undefined. 

在 JSONLINT 中测试 obj 输出显示错误,我假设 JSON.Parse 删除了“”。

无论如何,我无法访问数据。

4

1 回答 1

1

简单的。您的 JSON 对象是一个数组(前导 '[')。尝试这个:

obj[0].response

或者只是不要用括号括起来开始......

于 2011-10-12T23:59:30.213 回答