Должен ли я использовать строки для разделения имен объектов в JSON? - PullRequest
2 голосов
/ 27 июня 2011

Я видел учебник со следующим JSON:

{

   books:[{title:"frankenstein"},{title:"Moby Dick"}]

}

Когда я помещаю вышеупомянутое в js.bin, я получаю сообщение об ошибке, говорящее, что он ожидает строку и видел книги. Поэтому я изменил его на ниже, и он работает ...

{

   "books":[{"title":"frankenstein"},{"title":"Moby Dick"}]

}

Однако, если я изменю первый фрагмент кода сверху вниз, он будет работать.

var p = {

   books:[{title:"frankenstein"},{title:"Moby Dick"}]

};

Что мне интересно, так это:

1) Вам действительно нужно использовать речевые метки для имени переменной в JSON (пример, который я видел, неверен).
2) Есть ли связь между JSON и нотацией объектов javascript?

Ответы [ 3 ]

3 голосов
/ 27 июня 2011

Вы действительно должны использовать речевые метки для имени переменной в JSON (пример, который я видел, неверен, если вы это делаете).

Да.

Есть ли связь между JSON и нотацией объектов javascript?

Да.JSON - это аббревиатура от JavaScript Object Notation (но я не думаю, что вы это имеете в виду).

Отношения между JSON и JavaScript таковы, что JSON (почти) является подмножеством синтаксиса, используемого для создания литералов в JavaScript.

JSON сильно упрощен, что делает его несколько менее удобным для ручной работы (не создавайте JSON вручную, используйте библиотеку!), Но делает спецификацию меньше и парсеры легче писать.

Большинство изУпрощения сводятся к удалению исключений.

Например:

В JavaScript буквенный ключ объекта может быть идентификатором (затем вставьте подробное объяснение того, что делает допустимый идентификатор в JS здесь)или строка.В JSON ключ объекта должен быть строкой.

В JavaScript строка может быть разделена одинарными или двойными кавычками.В JSON строка должна быть разделена двойными кавычками.

2 голосов
/ 27 июня 2011

JSON требует, чтобы имена свойств заключались в двойные кавычки.Такое цитирование не требуется в JavaScript для литеральных выражений объектов.В этом отношении JSON строг в сравнении.JavaScript позволяет именам свойств не заключаться в кавычки , если они принимают форму допустимых идентификаторов, и только в том случае, если они не являются зарезервированными словами.

JSON определенно был получен из литерального синтаксиса объекта в JavaScript, но (в основном, чтобы сделать синтаксический анализ немного проще), он более строгий.Например, значения свойств в JSON не могут быть функциями.

1 голос
/ 27 июня 2011

Если вы говорите о JSON как о формате обмена данными , то да, имена должны быть указаны в кавычках.

Если вы говорите о «JSON» как о синтаксисе литерала объекта в JavaScript , то нет, вам не нужно избегать их, если они не являются ключевым словом в JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...