从多个字典中编写一个JSON

2024-04-25 10:20:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图通过在一个json文件上逐个附加/转储,将多个可能是20个字典写入一个json文件,到目前为止,我已经完成了下面的代码,但我做不到。如果有人知道更好的方法,请提供帮助

run1 = client.send_get('get_tests/11023')
run2 = client.send_get('get_tests/11038')

with open('result.json', 'w') as fp:
    json.dump(run1, fp)

Tags: 文件方法代码clientsendjsonget字典
2条回答

我不确定这是否可能。当你读回文件的内容时,你期望得到什么?你知道吗

当您从文件中读取某些内容时,它应该是有效的json,以便加载。一个选择是创建一个这样的字典

d = dict(run1 = run1, run2 = run2, ... )

然后json.dumpd将其自身放入文件中。你知道吗

更新: 下面是一个例子。它使用列表而不是字典(基于你的评论),但想法是一样的。你知道吗

run1 = dict(status = "ok", message = "All good")
run2 = dict(status = "error", message = "Couldn't connect")

def save_data(*runs):
   with open("foo.json", "w") as f:
      json.dump(list(runs), f)

def load_data(fname):
   with open(fname) as f:
      return json.load(f)


save_data(run1, run2)
outputs = load_data("foo.json")
print (outputs)

[{'status': 'ok', 'message': 'All good'}, {'status': 'error', 'message': "Couldn't connect"}]

试试这个:

run1 = client.send_get('get_tests/11023')
run2 = client.send_get('get_tests/11038')

with open('result.json', 'w') as fp:
    json.dumps({'run1': run1, 'run2': run2}, fp)

如果只想在文件中推送一个dict,则必须合并run1和run2:

run1.update(run2)

然后尝试:

with open('result.json', 'w') as fp:
    json.dumps(run1, fp)

你也可以试试这个:

with open('result.json', 'w') as fp:
    json.dumps({**run1, **run2}, fp)

相关问题 更多 >