我使用python 2.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
我该怎么办?
答案 0 :(得分:2)
您将字典双重编码为JSON,然后在文件中进行pickle:
json_format = json.dumps(d.items())
Fichier =open('C:\\Users\\Dev\\Desktop\\file\\json.json','wb')
pickle.dump(json_format,Fichier)
将json_format
字符串写入打开的文件对象,作为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对象(第一个代码段)加载回OrderedDict:
with open('C:\\Users\\Dev\\Desktop\\file\\json.json','rb') as Fichier:
final_result_from_fischier = json.load(Fichier, object_pairs_hook=OrderedDict)