JSON中的数字大小是否有限制?这不是我在谈论的JavaScript,而是JSON。
JSON与JavaScript如此关联 - 但仅仅因为一个数字不适合JavaScript的数字视图,是否会使它成为无效的JSON?
例如,JSON可以容纳Java Long吗?
答案 0 :(得分:2)
来自RFC 7159:
此规范允许实现设置范围限制 和接受的数字的精确度。自从实现的软件 IEEE 754-2008 binary64(双精度)数字[IEEE754]是 一般可用并广泛使用,良好的互操作性即可 通过期望不再精确或范围的实现来实现 从实现的角度来看,这些提供了 在预期精度内近似JSON数字。一个JSON
1E400
或3.141592653589793238462643383279
等数字可能表示 潜在的互操作性问题,因为它暗示了 创建它的软件希望接收软件有更大的功能 数字量级和精度的能力比广泛 可用。请注意,使用此类软件时,数字为整数和 在
[-(2**53)+1, (2**53)-1]
范围内是可互操作的 意识到实现将完全符合他们的数字 值。
tl; dr:建议您使用可互操作的数字(双精度),但不是必需的。
答案 1 :(得分:0)
在JSON中,数字将表示为字符串。如果数字太大(我认为超过53位)并且您尝试将字符串转换为 JavaScript 中的数字,则会发生意外情况。但是,如果 Java (或任何其他支持64位数字的语言)将字符串转换为适当的数字类型,您将获得预期的结果。