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

时间:2018-04-06 11:22:54

标签: 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": ""
    }]
}

1 个答案:

答案 0 :(得分:2)

您只需附加即可制作有效的JSON文件。这不仅仅是Python的一个问题 这是因为,正如您所指出的,必须关闭每个开括号,并且不应该有逗号。

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

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