jve*_*dge 31 python serialization json
根据这个转换表,当使用JSON模块进行序列化时,Python int会被编写为JSON数字 - 正如我所期望的那样.
我有一个带整数键和整数值的字典:
>>> d = {1:2}
>>> type(d.items()[0][0])
<type 'int'>
>>> type(d.items()[0][1])
<type 'int'>
Run Code Online (Sandbox Code Playgroud)
当我使用json模块将其序列化为JSON字符串时,该值被写为数字,但键被写为字符串:
>>> json.dumps(d)
'{"1": 2}'
Run Code Online (Sandbox Code Playgroud)
这不是我想要的行为,它似乎特别破碎,因为它打破了json.dumps/json.loads round-tripping:
>>> d == json.loads(json.dumps(d))
False
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,有没有办法可以强制将密钥写成数字?
Sea*_*ira 38
原因很简单,JSON不允许使用整数键.
object
{}
{ members }
members
pair
pair , members
pair
string : value # Keys *must* be strings.
Run Code Online (Sandbox Code Playgroud)
至于如何解决这个限制 - 首先需要确保接收实现可以处理技术上无效的JSON.然后,您可以替换所有引号或使用自定义序列化程序.