Короткий ответ: все они следуют одним и тем же основным форматам, но есть одно отличие: JSON использует двойные кавычки вокруг имен, а JavaScript - нет. Различие в спецификации формата, которые вы перечислили, является представление в двойные кавычки ("), чтобы окружить имя часть пар имя/значение объекта JSON.
Официальный ECMA JSON Data Interchange Format документ не не конкретно сказать, что название части пара имен/значений должна быть обернута кавычками. См. также http://json.org/, а также для краткой сводки. Однако JSON специально заявляет, что обозначение объекта в JSON конкретно определяется путем указания строки до и значения после двоеточия (который представляет собой пару имя/значение), и обе эти части должны быть окружены фигурными скобками:
Структура объекта представлена в виде пары фигурных фигурных скобок , окружающих нулевые или более пары имен/значений. Имя - это строка. одного маркеров толстой кишки следует за каждое имя, отделяя имя от значения (опять же, из ECMA JSON Data Interchange Format)
Технических характеристики дополнительных деталей, которые:
Строка представляет собой последовательность кодовых точек Unicode, завернутая с котировке знаки
Так как само определение объекта представляет собой пару имя/значение, в котором
«Имя является строкой» (раздел 6 того же document)
Можно сделать вывод о том, что имя должно всегда быть воплощен в кавычки, обращаясь к JSON (хотя и не в JavaScript).
JSON собственно буквально означает «Обозначение объекта JavaScript», что означает, что его создание было в рамках большого использования JavaScript.В самом JavaScript, это:
{ name: "value portion" }
практически эквивалентно следующему:
{ "name": "value portion" }
Проблема всегда предполагая, что это хорошая практика, когда кодирование в JavaScript является то, что название части имя/значение пары строки/объекта JSON могут содержать пробелы, такие как
{ "name portion": "value portion" }
В этом случае следующие было бы синтаксически неправильно:
{ name portion: "value portion" }
По этой причине многие люди программирования JavaScript предпочитают всегда использовать двойные кавычки вокруг имени части объектов имя/значение, так что он поддерживает совместимость с объектами JSON в процессе строительства или эксплуатации.
Связанные: [В чем разница между JSON и литерал объекта нотации?] (http://stackoverflow.com/q/2904131/218196) –
Да, я заметил это после того, как прокомментировал. Я редактировал сообщение, чтобы сделать ссылки более заметными. –
FWIW, на официальном сайте есть примеры: http://json.org/example.html. –