MCVE(使用py.test)
import json
def test_minimum():
internal={}
internal[0]=""
external={}
with open("source.json", 'w') as outfile:
json.dump(internal, outfile)
with open('source.json', 'r') as f:
external = json.load(f)
assert external == internal
我将json对象保存到磁盘,将其重新加载,并找到它与原始对象不匹配。我怀疑unicode会发生什么事情,但导致错误的是什么,以及处理错误的最佳方式。
错误消息是:
assert external == internal
E assert {'0': ''} == {0: ''}
E Left contains more items:
E {u'0': u''}
E Right contains more items:
E {0: ''}
E Use -v to get the full diff
答案 0 :(得分:2)
序列化为json时,Integer和float键会隐式转换为字符串。这个最小的例子澄清了它:
>>> json.dumps({1: 2})
'{"1": 2}'
>>> json.dumps({'1': 2})
'{"1": 2}'
显然,两个不同的Python对象被映射到相同的JSON,因此您无法始终往返它。