Какие символы действительны/недействительны в имени ключа JSON?
Существуют ли какие-либо запрещенные символы в именах ключей, для объектов JavaScript или строк JSON? Или символы, которые должны быть экранированы?
Чтобы быть более конкретным, я хотел бы использовать "$", "-" и пробел в именах ключей.
Ответ 1
Нет. Любая действительная строка является допустимым ключом. Он может даже иметь ", пока вы его избегаете:
{"The \"meaning\" of life":42}
Возможно, вы столкнетесь с трудностями при загрузке таких значений на некоторые языки, которые пытаются связать ключи с именами полей объектов. Однако я не знаю таких случаев.
Ответ 2
Следующие символы должны быть экранированы в данных JSON, чтобы избежать каких-либо проблем.
Следует избегать кодовых точек Unicode U + D800 до U + DFFF: они недействительны в Юникоде, потому что они зарезервированы для суррогатных пар UTF-16, Некоторые кодеры/декодеры JSON заменят их U + FFFD. См., Например, как с ними связано язык Go и его библиотека JSON.
Поэтому избегайте "\ uD800" до "\ uDFFF" в одиночку (не в суррогатных парах).