2013-09-22 3 views
0

Я боролся с несколькими строками кода Javascript, который должен быть простым. Я сократил свою строку JSON до той, которая была найдена в дальнейшем. Первое предупреждение в коде в дальнейшем генерирует следующее сообщение:Чтение значений сообщения JSON

{"list": [{"text": "Text1", "created_at": "Date1"}, {"text": "Text2", " created_at «:» Дата2" }]}

Однако второе предупреждение генерирует следующее сообщение об ошибке в IE: ошибка: Не удается получить значение свойства „0“: объект является нулевым или не определено

var data = "{\"list\":[{\"text\":\"Text1\", \"created_at\":\"Date1\"},{\"text\":\"Text2\", \"created_at\":\"Date2\"}]}"; 
alert(data); 
alert(data.list[0].created_at); 

Кто-нибудь поймет, почему я получаю эту ошибку?

ответ

3

data - обычная строка; у него нет никаких свойств.

Вы хотите разобрать JSON в строку в объект Javascript:

var obj = JSON.parse(data); 
+0

Спасибо. Сначала я разбирал строку, как вы это предполагали, но получал еще одну ошибку. Поэтому я нашел следующий ответ по ссылке ниже, которая, казалось, предложила противоположное, и, таким образом, полностью удалила парсинг. http://stackoverflow.com/questions/14265929/unable-to-solve-error-uncaught-syntaxerror-unexpected-token-o Я предполагаю, что я не правильно интерпретировал этот ответ. Я считаю, что моя первоначальная ошибка была связана с форматом самого объекта JSON. Еще раз спасибо. – JF0001

+0

@ JF0001: Похоже, вы вызывали 'JSON.parse()' на объект, а не на строку. – SLaks

1

Вы используете строку с Json форматирования, но не в формате JSON себя.

Вы должны использовать это:

var data = {"list":[{"text":"Text1", "created_at":"Date1"},{"text":"Text2", "created_at":"Date2"}]}; 
alert(data.list[0].created_at); 

Или используйте:

var jsonData = JSON.parse(data); 
alert(jsonData.list[0].created_at); 
Смежные вопросы