python:我需要附加一个带有 json 的文件,但它不输出有效的 json

标签 python json python-3.x

我正在处理一个打印 json 编码消息的文件

{
        "Status": "Non_Malicious",
        "alert_level": "Low",
        "alert_count": 1,
        "alert": "",
        "hosts_alert": ""
    }

注意该文件将按上述方式附加到每条消息

def jsonconvert(new_line, set_alert_level, set_status, hosts_alert, ip_address_alert, alert_count, title):

    data = {}
    data['alert_description'] = new_line
    data['alert_level'] = set_alert_level
    data['Status'] = set_status
    data['hosts_alert'] = hosts_alert
    data['alert'] = title

    json_data = json.dumps(data)

    file_write = open("json_file", 'a')
    file_write.write(json_data+','+'\n')
    file_write.close() 

但为了使其有效,我需要将其附加如下:我不确定如何完成它。

{
    "isoc": [{
        "Status": "Non_Malicious",
        "alert_level": "Low",
        "alert_count": 1,
        "alert": "",
        "hosts_alert": ""
    }, {
        "Status": "Non_Malicious",
        "alert_level": "Low",
        "alert_count": 1,
        "alert": "",
        "hosts_alert": ""
    }]
}

最佳答案

仅通过附加无法创建有效的 JSON 文件。这不仅仅是Python的问题。
这是因为,正如您所指出的,每个左括号都必须关闭,并且不应有尾随逗号。

以下是我想到的一些可能的解决方案:

  • 使用不受此限制的其他文件格式,例如 CSV 或 YAML,甚至纯文本
  • 不要追加到文件,而是使用数据库
  • 将所有内容保留在内存中,并将它们一次性转储到一个 JSON 文件中,每次都会覆盖它
  • 在每次追加操作时,删除右括号,追加数据,然后再次重新添加。这个解决方案是一个丑陋的黑客,所以我不建议它,但它有效。

关于python:我需要附加一个带有 json 的文件,但它不输出有效的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49691704/

相关文章:

python - 在元素和属性中搜索字符串

python - django 上的代码 200 httpresponse

python - 如何使用 Python 从网站获取并验证 JSON 数据?

javascript - 使用 javascript、php 和 json 在 html 中动态选择标签

python-3.x - Python sendto告诉我它需要一个int

python - 如何从图像中删除小的独立蒙版?

python - Elasticsearch python 客户端 : Getting the ES version through API call

python - Numpy 数组 - 根据前一个元素的变化改变下一个元素

python - 压缩两个不同长度的列表并重复较短列表中的项目

python - Python 初学者