Целые числа JSON: ограничение на размер

Где-нибудь указано, насколько большими могут 9X_json-encode быть целые числа JSON? Я предполагаю, что 9X_json они ограничены обычными (32-битными) int, но 9X_json-parsing я не могу найти нигде, что было бы записано. Мне 9X_json нужно закодировать длинные идентификаторы 9X_json-encode в Java, поэтому я предполагаю, что мне нужно 9X_json-parsing хранить их в виде строк в JSON, чтобы не 9X_json-decode рисковать переполнением.

98
0
3
Общее количество ответов: 3

Ответ #1

Ответ на вопрос: Целые числа JSON: ограничение на размер

Число JSON не ограничено the spec.

9X_Целые числа JSON: ограничение на размер_json

Поскольку JSON 9X_json-parsing - это абстрактный формат, не предназначенный 9X_json-parsing исключительно для JavaScript, фактическая 9X_json-encode целевая среда определяет границы того, что 9X_json-parsing может быть интерпретировано.

Также стоит 9X_jsonobject отметить, что нет «Целых чисел JSON», они 9X_json-decode являются подмножеством типа данных «Число».

108
4

  • На практике целые числа Javascript ограничены примерно 2 ^ 53 (целых чисел нет ...

Ответ #2

Ответ на вопрос: Целые числа JSON: ограничение на размер

RFC 7159: The JavaScript Object Notation (JSON) Data Interchange Format

Эта спецификация позволяет реализациям устанавливать 9X_jsonobject ограничения на диапазон и точность 9X_jsonobject принимаемых чисел. Поскольку программное 9X_json-decode обеспечение, реализующее IEEE 754-2008 9X_json-parsing binary64 (двойная точность) числа [IEEE754] общедоступный 9X_jsonobject и широко используемый, хорошая совместимость 9X_json-parsing может быть достигается реализациями, которые 9X_json-decode не ожидают большей точности или диапазона чем 9X_jsonobject они обеспечивают, в том смысле, что реализации 9X_jsonobject будут приблизительные числа JSON с 9X_json-decode ожидаемой точностью. JSON число, такое 9X_json как 1E400 или 3.141592653589793238462643383279, может 9X_json-parsing указывать потенциальные проблемы совместимости, поскольку 9X_json-encode это предполагает, что программное обеспечение, которое 9X_json-encode его создало, ожидает, что получающее программное 9X_json-encode обеспечение будет иметь больше возможности 9X_json-decode для числовой величины и точности, чем широко 9X_json-parsing распространено доступно.

20
0

Ответ #3

Ответ на вопрос: Целые числа JSON: ограничение на размер

Я только что провел следующий эмпирический 9X_json-parsing тест с помощью консоли Chrome (v.23 для 9X_jsonobject Mac):

> var j = JSON.parse("[999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999]") undefined > j[0] 1e+228 

Если JSON передается через HTTP, то 9X_json-encode число в любом случае будет преобразовано 9X_json-decode в String из Java, и тогда проблема может 9X_json-encode быть только в Javascript.

Из ECMAScript Language Specification 4.3.19:

4.3.19 Числовое 9X_json-decode значение

примитивное значение, соответствующее 9X_json 64-битной двоичной системе с двойной точностью формат 9X_jsonobject значения IEEE 754

ПРИМЕЧАНИЕ. Числовое значение 9X_json является членом числового типа и является 9X_json-decode прямым представление числа.

Что определено 9X_json-encode в wikipedia Double-precision floating-point format.

8
2

  • И, к сведению, [Джексон] (http://jackson.codehaus.org/) правильно анализирует длинные целые числа во ...