以JSON格式解析列表的Python问题

时间:2016-06-05 22:32:28

标签: python json

我使用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

我该怎么办?

1 个答案:

答案 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)