Проблема разбора Javascript Disqus JSON в узле - PullRequest
0 голосов
/ 13 октября 2011

Я получаю следующее (str) обратно от Disqus, ожидается JSON:

? ({"Code": 0, "response": {"username": "FakeGrimlock", "about": "ME GIANT ROBOT DINOSAUR. НАПИШИТЕ КОД ДЛЯ ЗАПУСКА. ЕСТЬ ЛЮДЕЙ, КОТОРЫЕ РАБОТАЮТ ИЛИ ГЛУПО. BEER. "," Name ":" FAKE GRIMLOCK "," url ":" http://WWW.FAKEGRIMLOCK.COM", "profileUrl": "http://disqus.com/FakeGrimlock/"," emailHash ":" 07bb07626b48f05c093d70fb69ef8a76 "," avatar ": {" permalink ":" 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. НАПИШИТЕ КОД ДЛЯ ЗАПУСКА. ЕДИТ ЧЕЛОВЕКА, КОТОРЫЙ РАБОТАЕТ ИЛИ ГЛУПО. . "," name ":" FAKE GRIMLOCK "," url ":" http://WWW.FAKEGRIMLOCK.COM", "profileUrl": "http://disqus.com/FakeGrimlock/"," emailHash ":" 07bb07626b48f05c093d70fb69ef8a76 "," avatar ": {" permalink " : "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) отображает это:

[{code: 0, ответ: {username: 'FakeGrimlock', о: «МЫ ГИГАНТСКИЙ РОБОТ ДИНОЗАВР. НАПИСАТЬ КОД ДЛЯ ЗАПУСКА. ЕСТЬ ЛЮДЕЙ, КОТОРЫЕ СКУЧАЮТ ИЛИ ГЛУПО. ПИТЬ КОФЕ И ПИВО. », название: 'ФАЙК ГРИМЛОК', URL: 'http://WWW.FAKEGRIMLOCK.COM', profileUrl: 'http://disqus.com/FakeGrimlock/', emailHash: '07bb07626b48f05c093d70fb69ef8a76', аватар: [Объект], isAnonymous: ложь, id: '4379401'}}]

И тогда это терпит неудачу здесь:

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

Проверка вывода obj в JSONLINT показывает ошибку, которая, как я предполагаю, заключается в том, что "" были удалены JSON.Parse.

Несмотря на это, я не могу получить доступ к данным.

1 Ответ

1 голос
/ 13 октября 2011

Simple.Ваш JSON-объект - это массив (ведущий '[').Попробуйте это:

obj[0].response

Или просто не заключайте в скобки, чтобы начать с ...

...