2013-03-06 7 views
1

Почему я не могу разобрать объект JSON? Мне нужно обернуть его в кавычки для синтаксического анализа.Почему я не могу разобрать JSON без кавычек в JS?

// JSON object 
var foo = {"sayHi": {"nl":"hoi", "en":"hello"}}; 
alert(foo.sayHi.en); 

// string  
var foo = '{"sayHi": {"nl":"hoi", "en":"hello"}}';  
alert(JSON.parse(foo).sayHi.nl); 

редактировать:

// does not work 
var foo = {"sayHi": {"nl":"hoi", "en":"hello"}}; 
alert(JSON.parse(foo).sayHi.nl); 

Да, оба работают, но первый Foo не работает с разборе. И мне нравится первый foo лучше, потому что мне не нужно беспокоиться о разрывах строк, цитатах и ​​плюсах.

edit2:

Я действительно ищу хороший способ для хранения JSON в переменном, вместо того, чтобы использовать вызов Ajax, чтобы получить его.

+1

Я пробовал это, и он отлично работает. http://jsfiddle.net/ceXP9/. Какой браузер вы использовали. – pktangyue

+0

Нет такой вещи, как объект JSON. JSON по определению является строкой. – jbabey

ответ

3

Поскольку это {"sayHi": {"nl":"hoi", "en":"hello"}} уже Js объект

и это '{"sayHi": {"nl":"hoi", "en":"hello"}}' это просто строка, содержащая все, что, может быть, JSON

+0

Получаю, вам не нужен синтаксический анализ – wubbewubbewubbe

1

Зависит от того, что вы подразумеваете под «разобрать объект JSON» (который не является вещью кстати, JSON - обозначение). Если вы хотите разобрать его в объект, то поздравляю, все готово! JSON.parse берет строку с использованием JSON (обозначение) и превращает ее в объект в JavaScript (но многие другие языки также могут анализировать JSON и превращать его в соответствующие структуры данных).

Оба фрагмента кода работают, как и ожидалось.