JSON по-прежнему становится все более и более важным для обмена данными, но спецификация JSON довольно слаба в некоторых аспектах:
Имена внутри объекта ДОЛЖНЫ быть уникальными.
Реализация может устанавливать ограничения на размер текстов, которые она принимает.Реализация может устанавливать ограничения на максимальную глубину вложенности.Реализация может устанавливать ограничения на диапазон чисел.Реализация может установить ограничения на длину и символьное содержимое строк.
Я думаю, что большинство анализаторов JSON игнорируют дублированные ключи объекта и не различают минус ноль (-0) и ноль.Большинство может также ограничить число 32-разрядными числами с плавающей запятой или целыми числами со знаком.Кроме того, JSON может содержать символы, которые не являются допустимыми кодовыми точками Unicode (см. этот вопрос ).Держу пари, что у реализаций могут быть проблемы с символами Юникода выше базовой многоязычной плоскости (от U + 0000 до U + FFFF).Но это также не спецификация JSON, а базы данных JSON, такие как CouchDB, MongoDB, Persevere / Dojo и т. Д., Добавляют ограничения: я сомневаюсь, что вы можете использовать ключи объектов, такие как id
, _id
и $ref
, среди всех хранилищ JSONможет иметь особое значение в каждой системе.
Это несколько расстраивает: JSON должен быть легким, но чем ближе вы смотрите, тем больше препятствий вы обнаружите.Существует ли общее (не слишком ограниченное) подмножество JSON, которое можно безопасно использовать среди всех парсеров и баз данных, или движение NoSQL добавит все больше и больше расширений и специальные конструкции, которые вам не следуетиспользовать в ваших документах JSON?