Какие символы допустимы / недействительны в имени ключа JSON? - PullRequest
123 голосов
/ 30 декабря 2011

Есть ли какие-либо запрещенные символы в именах ключей, для объектов JavaScript или строк JSON?Или символы, которые нужно экранировать?

Чтобы быть более точным, я бы хотел использовать "$", "-" и пробел в именах ключей.

Ответы [ 4 ]

150 голосов
/ 30 декабря 2011

Нет.Любая допустимая строка является допустимым ключом.Он может даже иметь ", пока вы его избегаете:

{"The \"meaning\" of life":42}

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

47 голосов
/ 30 декабря 2011

Следующие символы должны быть экранированы в данных JSON, чтобы избежать проблем

'одинарная кавычка

”кавычка

\ обратная косая черта

всеуправляющие символы, такие как \ n \ t

Анализатор JSON может помочь вам справиться с JSON.

РЕДАКТИРОВАТЬ: Вот заменяющий анализатор JSON, поскольку OPссылка не работает

9 голосов
/ 04 января 2017

Стоит отметить, что хотя запуск ключей с номерами действителен, это может вызвать некоторые непреднамеренные проблемы.

IE:

var testObject = {
    "1tile": "test value"
};
console.log(testObject.1tile); // fails, invalid syntax
console.log(testObject["1tile"]; // workaround
6 голосов
/ 07 июля 2016

Unicode кодовые точки U + D800 до U + DFFF следует избегать: они недействительны в Unicode, потому что они зарезервированы для суррогатных пар UTF-16. Некоторые JSON-кодеры / декодеры заменят их на U + FFFD. Посмотрите, например, как с ними работает язык Go и его библиотека JSON .

Так что избегайте "\ uD800" до "\ uDFFF" в одиночку (не в суррогатных парах).

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