JSON格式的Python解析列表问题

JSON格式的Python解析列表问题,python,json,Python,Json,我使用Python2.7解析JSON格式的值 这是我的剧本: from collections import OrderedDict import json import os import pickle d=OrderedDict([(3215, False), (3216, False), (8004, False), (8002, False), (3589, False), (3753, False), (3752, True), (3755, False), (3754

我使用Python2.7解析JSON格式的值 这是我的剧本:

from collections import OrderedDict
import json
import os
import pickle
d=OrderedDict([(3215, False), (3216, False), (8004, False), (8002, False),         (3589, False), (3753, False), (3752, True), (3755, False), (3754, False)]))
json_format = json.dumps(d.items())
Fichier =open('C:\\Users\\Dev\\Desktop\\file\\json.json','wb')
pickle.dump(json_format,Fichier)
Fichier =open('C:\\Users\\Dev\\Desktop\\file\\json.json','rb')
final_result_from_fichier = pickle.load(Fichier)
但是在执行这个脚本之后,我在json文件中找到了一些外部字符 这是我的脚本的输出:

S'[[3215, false], [3216, false], [8004, false], [8002, false], [3589, false], [3753, false], [3752, True], [3755, false], [3754, false]]'p0

我能做什么?

您在文件中将字典双重编码为JSON,然后是pickle:

json_format = json.dumps(d.items())
Fichier =open('C:\\Users\\Dev\\Desktop\\file\\json.json','wb')
pickle.dump(json_format,Fichier)
这就是将
json\u格式的字符串作为Pickle编码的数据写入打开的文件对象。即使您纠正了这一点,JSON格式也不是Python pickle格式。不能使用
pickle
模块加载JSON。只需使用
json.load()
即可

只需在字典中使用json.dump()

with open('C:\\Users\\Dev\\Desktop\\file\\json.json', 'wb') as Fichier:
    json.dump(d, Fichier)
如果您想要一个JSON对象(键值对),或者如果您需要一个包含嵌套数组的JSON数组(每个数组都有一个键和一个值),请使用
d.items()

with open('C:\\Users\\Dev\\Desktop\\file\\json.json', 'wb') as Fichier:
    json.dump(d.items(), Fichier)
我将文件作为上下文管理器打开,以确保在写入操作完成后再次关闭

您可以使用以下命令将JSON对象(第一个代码段)加载回OrderedICT:

with open('C:\\Users\\Dev\\Desktop\\file\\json.json','rb') as Fichier:
    final_result_from_fischier = json.load(Fichier, object_pairs_hook=OrderedDict)

你为什么在JSON数据文件上使用
pickle.load()
?@bader:啊,对不起,我很抱歉。我已经更正了答案;我不小心复制了你的
pickle
行,而没有将它们更正为
json.dump
json.load
调用。我有罪!它成功了,它成功了,谢谢,非常感谢:)我还有其他问题,为什么我找不到与列表d相同的形式??当我打开文件时,我发现:{“3215”:false,“3216”:false,“8004”:false,“8002”:false}不知道你在问什么?当我打开文件时,我发现:{“3215”:false,“3216”:false,“8004”:false,“8002”:false}为什么没有找到这样的列表:[(3215,false),(3216,false),(8004,false),(8002,false)]???