Какие символы допустимы / недопустимы в имени ключа JSON?

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

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

4 ответов


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

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

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


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

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

" цитата

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

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

JSON Parser может помочь вам справиться с JSON.

изменить: вот замена парсера JSON, так как ссылка OP мертва


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

чтобы избежать "\uD800" на "\uDFFF" (не в суррогатные пары).


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

IE:

var testObject = {
    "1tile": "test value"
};
console.log(testObject.1tile); // fails, invalid syntax
console.log(testObject["1tile"]; // workaround