在.json文件中获取元素的父级



我有一个包含许多元素的.json文件。我希望能够搜索一个元素值,并检查它的父元素/元素在其中的内容。这里我有一个.json文件的示例。

{
"users": {
"123467890": {
"lvl": 100,
"xp": 1000,
"lastMessage": 91.996059
}
}
}

假设我选择了lvl作为我的元素。如果不进行硬编码,我如何获得它的父级值?

遍历字典并添加包含值["lvl"]为100的键。

d = {
"users": {
"123467890": {
"lvl": 100,
"xp": 1000,
"lastMessage": 91.996059
},
"test": {
"lvl": 1,
"xp": 0,
"lastMessage": 91.996059
},
}
}
lvl_100_users = []
for user_id, properties in d["users"].items():
print(f"User ID: {user_id}; Properties: {properties}")
if properties["lvl"] == 100:
lvl_100_users.append(user_id)
print(lvl_100_users)

输出:

User ID: 123467890; Properties: {'lvl': 100, 'xp': 1000, 'lastMessage': 91.996059}
User ID: test; Properties: {'lvl': 1, 'xp': 0, 'lastMessage': 91.996059}
['123467890']

这里,obj指的是json对象,key指的是"lvl";(你的元素(。

def json_extract(obj, key):
"""Recursively fetch values from nested JSON."""
arr = []
def extract(obj, arr, key, parent=None):
"""Recursively search for values of key in JSON tree."""
if isinstance(obj, dict):
if key in obj.keys():
arr.append(parent)
return parent
for k, v in obj.items():
if isinstance(v, (dict, list)):
extract(v, arr, key, k)
elif isinstance(obj, list):
for item in obj:
extract(item, arr, key, parent)
return arr
values = extract(obj, arr, key)
return values

最新更新