如何使用 python 将响应写入 JSON 格式的文件?

How to write the response in a file with JSON format using python?

我正在尝试以 JSON 格式存储来自 API 的响应。我得到了字符串格式的 JSON 响应并存储在一个文件中。如何制作或转换我们在在线 JSON 查看器应用程序中看到的缩进?或 JSON 格式。

我用来存储在文件中的代码。

    def test_url(self):
       resp =requests.get(www.myurl.com)
       data = resp.text
       f = open("19octfile.json", "w")
       f.write(data)
       f.close()

此代码将响应存储在 19octfile.json 中,格式如下:

{"data": [{"id":"myname","id":"123","name":"myname","user":"m3","provider":"user","region":"india"}]}

现在,如何使用缩进存储响应,即以 JSON 格式,以便用户在阅读时可以轻松理解。

我的不同尝试但徒劳无功:

        with codecs.open('data.json', 'w', 'utf8') as f:
        f.write(json.dumps(data, sort_keys=True, ensure_ascii=False))

此代码给出与 unicode 字符无缩进相同的结果

       with open('17octenv71232111.json', 'w') as outfile:
           json.dump(data,outfile)
           outfile.close()

此代码与 unicode char 和无缩进的结果相同

任何人都可以帮助我是否有任何库可以进行格式工作或任何代码来提供帮助。

import json
d={"data": [{"id":"myname","id":"123","name":"myname","user":"m3","provider":"user","region":"india"}]}
print(json.dumps(d,indent=2))

写入文件

with open('17octenv71232111.json', 'w') as outfile:
   outfile.write(json.dumps(d,indent=2))

函数 json.dumps 接受命名参数 indent。来自文档:

If indent is a non-negative integer, then JSON array elements and object members will be pretty-printed with that indent level. An indent level of 0, or negative, will only insert newlines. None (the default) selects the most compact representation.

首先,您需要将 json 文件内容加载到 python 对象中。您当前的代码正在将 json 字符串传递给 json.dumps。使用以下内容:

j = json.loads(data)
f.write(json.dumps(j, sort_keys=True, indent=4))

此处 json.loads 函数将 json 字符串转换为 python 对象,该对象可以传递给 json.dumps