我正在处理一个打印 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/