为什么Python json模块将map键中的浮点数表示为字符串?

Max*_*Max 0 python floating-point json

请参阅以下代码:

>>> import json
>>> m = {}
>>> m[0.0] = 1.0
>>> json.dumps(m)
'{"0.0": 1.0}'
Run Code Online (Sandbox Code Playgroud)

在地图的价值中,我们有1.0.但是在键中我们有"0.0"(一个Json字符串).

浮动的这种模糊处理只花了我一些调试时间.有谁知道为什么python的json模块会这样做?

Tha*_*tos 6

因为JSON密钥必须是字符串.请参阅RFC.

  • 值得注意的是,尽管流行的观点,JSON是精确定义的Javascript子集,而不仅仅是有效的javascript文字.虽然这种情况,IMO应该抛出异常. (2认同)