【问题标题】:Write the correct format of JSON to file using json.dumps() in Python 3在 Python 3 中使用 json.dumps() 将正确格式的 JSON 写入文件
【发布时间】: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


【解决方案1】:

导入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)

【讨论】:

    【解决方案2】:

    试试这个:

    with open('task.json', 'w') as f:
        s = json.dumps(mydict, indent=2)
        f.write('%s\n' % (s))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-31
      • 2017-06-03
      • 2018-05-16
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多