JSON.parse неправильно оценивает строки JSON - PullRequest
1 голос
/ 25 января 2012

Я использую JSON.parse для разбора этой строки JSON

[{"created_at":"2012-01-24T22:36:21Z","name":"joe","age":42,"updated_at":"2012-01-24T22:36:21Z"}]

Однако я просто получаю этот результат в виде вывода:

[object Object]

Что не должно быть результатом. Я использую это в рамках капучино. Кто-нибудь знает, что я здесь не так делаю?

Ответы [ 2 ]

1 голос
/ 25 января 2012

[object Object] - это то, что объекты отображаются при вызове на них toString.Похоже, вы берете свой результат и пытаетесь вызвать obj.toString()

Кроме того, ваш JSON является массивом с одним элементом, поэтому для проверки правильности вашего результата вы можете получить доступ к свойству nameпо индексу [0]:

obj[0].name // should be "joe".

var text = '[{"created_at":"2012-01-24T22:36:21Z","name":"joe","age":42,"updated_at":"2012-01-24T22:36:21Z"}]';

var obj = JSON.parse(text);

alert(obj[0].name); //alerts joe

DEMO


Или избавиться от массиватак как на самом деле это не так уж много

var text = '{"created_at":"2012-01-24T22:36:21Z","name":"joe","age":42,"updated_at":"2012-01-24T22:36:21Z"}';

var obj = JSON.parse(text);

alert(obj.name); //still joe

DEMO

0 голосов
/ 25 января 2012

Это массив, потому что он в квадратных скобках - [] - удалите их, и он должен работать ... Даже если это «синтаксически» правильно, парсер видит это как массив (который является типом объекта), но выигралне делайте работу так, как вы ожидаете.

Также для справки в будущем: попробуйте пометить ее и посмотреть, не испорчен ли ваш синтаксис: http://jsonlint.com/

...