Python将新元素添加到现有JSON文件

时间:2020-02-27 07:56:23

标签: python json

我正在尝试将一些数据附加到python内部的JSON文件中。 它将CVE-ID添加到我的客户JSON文件中。

我自己无法解决此问题。如果我在追加后打印字典,则显示预期结果。 但是似乎该文件不会在追加之后写入。我还尝试过在“附加行”之后使用json.dump()-但也没有成功。

此刻我的代码如下:

with open("test.json", "r+") as customerdata:
    customers_json = json.load(customerdata)

# some other code here...

if cve["cve"]["CVE_data_meta"]["ID"] not in customer["customer"]["already-sent-cve"]:
                customers_json["customers"][0]["customer"]["already-sent-cve"].append(cve["cve"]["CVE_data_meta"]["ID"])

我的JSON文件如下:

    {
        "customers":[
            {
                "customer":{
                    "id":"1",
                    "company-name":"test GmbH",
                    "alert-email":"xyz@googlemail.com",
                    "using":[
                        "xxx",
                        "xyz"
                    ],
                    "already-sent-cve":[
                        "CVE-2013-3738"
                        # here new CVE
                    ]
                }
            },
        {
            "customer":{
                "id":"2",
                  ...
          }
    ]
}

仅供参考:还有另一个带有CVE的JSON文件,我正在从该文件中收集数据。

任何建议如何解决这个问题?

致谢。

编辑:

能够解决此问题:

with open("test.json", "w") as customerdata:
    customers_json["customers"][0]["customer"]["already-sent-cve"].append(cve["cve"]["CVE_data_meta"]["ID"])
    json.dump(customers_json, customerdata, indent=2)

1 个答案:

答案 0 :(得分:1)

您需要将数据写回到文件中

with open('test.json', 'w') as customerdata:
    json.dump(customers_json, customerdata)