我正在尝试以JSON格式存储来自API的响应。我得到了字符串格式的JSON响应,并存储在文件中。如我们在onlineJSONViewer应用程序中看到的,我如何制作它或使用缩进进行转换?或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格式存储,以便用户在阅读时可以轻松理解。
我不同的TRY,但徒劳无功:
with codecs.open('data.json', 'w', 'utf8') as f:
f.write(json.dumps(data, sort_keys=True, ensure_ascii=False))
with open('17octenv71232111.json', 'w') as outfile:
json.dump(data,outfile)
outfile.close()
有人可以帮我吗,有没有可以做格式工作的库或任何可以帮助我的代码。
答案 0 :(得分:2)
函数json.dumps接受命名参数indent
。从文档中:
如果indent是一个非负整数,则JSON数组元素和对象成员将以该缩进级别进行漂亮打印。缩进级别0或负数将仅插入换行符。无(默认)选择最紧凑的表示形式。
首先,您需要将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
。
答案 1 :(得分:1)
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))