使用Python 3中的JSON.dumps()将正确格式的JSON写入文件
假设我有一本简单的字典,如下所示:使用Python 3中的JSON.dumps()将正确格式的JSON写入文件,json,python-3.x,dictionary,Json,Python 3.x,Dictionary,假设我有一本简单的字典,如下所示: a = {'animal' : 'fish', 'fruit' : 'apple','vehicle' : 'car'} b = jason.dumps(a) with open('output.json', 'w') as f: f.write(pprint.pformat(b)) {"animal": "fish", "fruit": "apple", "vehicle": "car"} 我希望将a转换为JSON并写入文件。如果我使
a = {'animal' : 'fish', 'fruit' : 'apple','vehicle' : 'car'}
b = jason.dumps(a)
with open('output.json', 'w') as f:
f.write(pprint.pformat(b))
{"animal": "fish", "fruit": "apple", "vehicle": "car"}
我希望将a
转换为JSON并写入文件。如果我使用了json.dumps()
,如下所示:
a = {'animal' : 'fish', 'fruit' : 'apple','vehicle' : 'car'}
b = jason.dumps(a)
with open('output.json', 'w') as f:
f.write(pprint.pformat(b))
{"animal": "fish", "fruit": "apple", "vehicle": "car"}
JSON文件output.JSON
的内容变成:
'{"animal": "fish", "fruit": "apple", "vehicle": "car"}'
我希望实际拥有的(在文件中)没有引用,如下所示:
a = {'animal' : 'fish', 'fruit' : 'apple','vehicle' : 'car'}
b = jason.dumps(a)
with open('output.json', 'w') as f:
f.write(pprint.pformat(b))
{"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)
以open(“output.json”)作为f:
... data=json.load(f)
...
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
文件“/Users/louis.kok/analysis/devel/anaconda3/lib/python3.7/json/_init__.py”,第296行,已加载
parse_常量=parse_常量,object_pairs_hook=object_pairs_hook,**千瓦)
文件“/Users/louis.kok/analysis/devel/anaconda3/lib/python3.7/json/_init__.py”,第348行,加载
返回\u默认\u解码器。解码
文件“/Users/louis.kok/analysis/devel/anaconda3/lib/python3.7/json/decoder.py”,第337行,在decode中
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
文件“/Users/louis.kok/analysis/devel/anaconda3/lib/python3.7/json/decoder.py”,第355行,原始解码
从None引发JSONDecodeError(“预期值”,s,err.value)
json.decoder.JSONDecodeError:预期值:第1行第1列(字符0)
导入
json
库
import json
使用json.dump
with open('output.json', 'w') as f:
json.dump(a, f)
使用json.load阅读它
with open("output.json") as f:
data = json.load(f)
试试这个:
以open('task.json','w')作为f的:
s=json.dumps(mydict,indent=2)
f、 写入(“%s\n%”(s))
这是一个有效的JSON字符串“{”animal:“fish”,“fruit:“apple”,“vehicle:“car”}”
。为什么你需要它没有报价?阅读时使用json.loads()
@bison72@Vishnudev我已经编辑了我的问题。我在加载文件时收到错误,但是没有引号,我可以加载它。我添加了一个答案。