【发布时间】:2020-01-20 03:35:24
【问题描述】:
假设我有一个简单的字典如下:
a = {'animal' : 'fish', 'fruit' : 'apple','vehicle' : 'car'}
我希望将a 转换为 JSON 并写入文件。如果我使用json.dumps() 如下:
b = jason.dumps(a)
with open('output.json', 'w') as f:
f.write(pprint.pformat(b))
JSON文件output.json的内容变成了:
'{"animal": "fish", "fruit": "apple", "vehicle": "car"}'
我希望实际拥有的(在文件中)是没有引号的,如下所示:
{"animal": "fish", "fruit": "apple", "vehicle": "car"}
什么是正确的编码方法,以便我可以获得所需的输出?
提前致谢。
[编辑]:我需要文件中所需的输出的原因是因为我在加载文件时收到了以下错误。
>>> with open("output.json") as f:
... data = json.load(f)
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/Users/louis.kok/Analyses/devel/anaconda3/lib/python3.7/json/__init__.py", line 296, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "/Users/louis.kok/Analyses/devel/anaconda3/lib/python3.7/json/__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "/Users/louis.kok/Analyses/devel/anaconda3/lib/python3.7/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Users/louis.kok/Analyses/devel/anaconda3/lib/python3.7/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
【问题讨论】:
-
这是一个有效的 JSON 字符串
'{"animal": "fish", "fruit": "apple", "vehicle": "car"}'。为什么你需要它不带引号?阅读时使用json.loads()@bison72 -
@Vishnudev 我已经编辑了我的问题。我在加载文件时收到错误,但没有引号,我可以加载它。
-
我已经添加了答案。
标签: json python-3.x dictionary