JSON 中数值的序列化
Serialization of numerical values in JSON
我注意到 https://jwt.io/ 为包含以不同表示法编写的数值的有效负载输出相同的 Base64 字符串。
例如,这两个有效载荷产生相同的 Base64 字符串:
{
"value": 0.000001
}
{
"value": 1.0e-6
}
两者都产生:eyJ2YWx1ZSI6MC4wMDAwMDF9
解码后显示为:{"value":0.000001}
在哪里可以找到有关此的更多信息?我想有一个 RFC 或类似形式的规范。也欢迎有关相关主题的非正式资源!
号码的创建方式无关紧要。我的意思是数字文字使用了哪种表示法。内部表示是 IEEE 754。当序列化发生时,两个值是相同的。因此,预期会有相同的序列化输出。
关于将数字序列化为字符串的方式,您可以阅读 Spec。 TLDR 它取决于有效数字的数量
console.log(1e-6 === .000001)
console.log(JSON.stringify(1e-6), 1e-6.toString())
console.log(JSON.stringify(1e-7), 1e-7.toString())
我注意到 https://jwt.io/ 为包含以不同表示法编写的数值的有效负载输出相同的 Base64 字符串。 例如,这两个有效载荷产生相同的 Base64 字符串:
{
"value": 0.000001
}
{
"value": 1.0e-6
}
两者都产生:eyJ2YWx1ZSI6MC4wMDAwMDF9
解码后显示为:{"value":0.000001}
在哪里可以找到有关此的更多信息?我想有一个 RFC 或类似形式的规范。也欢迎有关相关主题的非正式资源!
号码的创建方式无关紧要。我的意思是数字文字使用了哪种表示法。内部表示是 IEEE 754。当序列化发生时,两个值是相同的。因此,预期会有相同的序列化输出。
关于将数字序列化为字符串的方式,您可以阅读 Spec。 TLDR 它取决于有效数字的数量
console.log(1e-6 === .000001)
console.log(JSON.stringify(1e-6), 1e-6.toString())
console.log(JSON.stringify(1e-7), 1e-7.toString())