从json列表中的文件中写入json

时间:2019-05-02 00:42:11

标签: python json parsing

我多次调用一个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}}"]

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)