You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSON数值序列化问题:不同记法数值为何生成相同JWT Base64串

JSON数值序列化规则说明

官方规范依据

当前JSON格式的正式官方标准是RFC 8259,其中关于数值序列化的相关规定如下:

  • JSON语法层面同时支持定点数值表示(如0.000001)和科学计数法表示(如1.0e-6),二者属于语义完全等价的数值
  • 规范未强制要求JSON序列化器保留原始输入的数值表示格式,仅要求序列化生成的数值经过解码后,与原始数值的数学值相等即可
  • 语义等价的不同数值表示,在序列化后输出为同一种格式完全符合标准要求

对应现象的原理

你观察到两个不同数值表示的payload生成相同Base64编码,是因为:

  • 平台底层调用的JSON序列化库会对语义等价的数值做统一格式输出,你给出的两个payload:
{
  "value": 0.000001
}
{
  "value": 1.0e-6
}

经过序列化后生成的JSON字符串完全一致,对应的Base64编码eyJ2YWx1ZSI6MC4wMDAwMDF9自然完全相同

  • 两个payload序列化后的统一输出为{"value":0.000001},和你解码得到的结果一致

非正式行业参考规则

目前主流编程语言的JSON序列化库基本遵循通行的实现约定:

  • 对于浮点数,当数值大小处于1e-6到1e21区间内时,默认采用定点格式输出,超出该区间时才会自动转为科学计数法输出
  • 所有序列化实现的核心原则都是优先保证数值语义等价,不会为了保留原始输入格式破坏数值一致性
  • 如果你有特殊需求要保留原始的数值表示形式,只能将数值以字符串类型存储在JSON中,无法通过数值类型实现

内容的提问来源于stack exchange,提问作者igobivo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:24:06