我多次调用一个API以获得结果。结果以json格式返回。我将所有结果保存在列表中。一旦接收到所有数据,便使用以下代码将列表的内容写入文件。我的最终目标是将结果保存在具有有效json的文件中。但是,以下代码将'\'
添加到文件的json结果中。有人可以帮我解决问题。
result = []
// In a for loop I append json results to this list. I have not written the code here.
// Then I use this code to write to a file.
with open(host_log_path, 'w') as log_file:
log_file.write(json.dumps(result))
使用斜线对电流输出进行采样:
["{\"hdr\":{\"msgt\":\"InitialState\",\"ver\":\"CV-NOTSET\",\"uid\":1,\"seq\":1}}"]
答案 0 :(得分:1)
您得到的输出表明result
包含JSON字符串列表,而不是对象列表。您无需调用json.dumps()
,它们已经被格式化为JSON。您应该将它们每个都单独写到日志文件中。
with open(host_log_path, "a") as log_file:
for msg in result:
log_file.write((msg if type(msg) is str else json.dumps(msg)) + "\n")
您还应该使用a
模式将其附加到日志文件。每当您打开代码时,您的代码就会清除旧内容。
如果要将它们写为单个JSON数组,则可以在循环中调用json.loads()
。
with open(host_log_path, "w") as log_file:
msgs = [json.loads(msg) if type(msg) is str else msg for msg in result]
json.dump(msgs, log_file)