从 JSON 文件中删除特定数据

Delete specific data from JSON file

思路:
应加载 JSON 文件并应删除对象 2-uID 及其子项。编辑后的内容应保存在同一个 JSON 文件中。

问题:
我已经尝试了几种方法,例如 ,但还没有任何效果。
显示的代码没有删除任何内容,而是将所有内容推入一行。

当前代码
Python代码:

import json

with open("path/to/json") as data_file:
    data = json.load(data_file)

for element in data:
    if '2-uID' in element:
        del element['2-uID']

with open("path/to/json", 'w') as data_file:
    data = json.dump(data, data_file)

JSON 文件:

    {
    "uID": {
        "1-uID": {
            "username": "1-username",
            "pinned": true
        },
        "2-uID": {
            "username": "2-username",
            "pinned": false
        },
        "3-uID": {
            "username": "3-username",
            "pinned": false
        }
    }
}

这是 JSON 文件处理后的样子:

    {
    "uID": {
        "1-uID": {
            "username": "1-username",
            "pinned": true
        },
        "3-uID": {
            "username": "3-username",
            "pinned": false
        }
    }
}

编辑:

这是你的问题:

for element in data:
    if '2-uID' in element:
        del element['2-uID']

data 是顶级元素,所以它只有一个键:“uID”。尝试打印出“元素”:)


也许我误会你了,但你不应该只使用 del 吗?

这对我有用

# string holding the JSON object
s = r"""{
    "uID": {
        "1-uID": {
            "username": "1-username",
            "pinned": true
        },
        "2-uID": {
            "username": "2-username",
            "pinned": false
        },
        "3-uID": {
            "username": "3-username",
            "pinned": false
        }
    }
}"""

import json

j = json.loads(s)

# remove one of the elements
del j["uID"]["2-uID"]

# see that the element is now gone
print(j)

# output:
# {'uID': {'2-uID': {'pinned': False, 'username': '2-username'},
#          '3-uID': {'pinned': False, 'username': '3-username'}}}