从 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'}}}
思路:
应加载 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'}}}