在Python中如何获取多级JSON中指定key对应上级节点的name值
如何从嵌套JSON中找到指定subcategory对应的上级节点name?
嘿,我来帮你搞定这个问题!其实你的需求没你想的那么复杂——不需要什么“向上遍历层级”,因为每个ancestors数组里的元素本身就是你要找的“上级节点”,它的subcategory只是用来标记这个节点的类型(城市/省份/国家)而已。我们只需要遍历数组,找到类型匹配的节点,直接取它的name就行。
举个JavaScript的实现例子:
// 你的原始JSON数据 const locationData = { "ancestors": [ { "subcategory": [ { "key": "city", "name": "City" } ], "name": "Da Lat" }, { "subcategory": [ { "key": "province", "name": "Province" } ], "name": "Lam Dong Province" }, { "subcategory": [ { "key": "country", "name": "Country" } ], "name": "Vietnam" } ] }; // 找到subcategory中key为"province"的节点 const provinceNode = locationData.ancestors.find(node => { // 检查当前节点的subcategory里是否有key匹配的项 return node.subcategory.some(subItem => subItem.key === "province"); }); // 获取目标值 if (provinceNode) { console.log(provinceNode.name); // 输出:Lam Dong Province } else { console.log("未找到匹配的province节点"); }
如果用Python实现的话:
# 你的原始JSON数据 location_data = { "ancestors": [ { "subcategory": [ { "key": "city", "name": "City" } ], "name": "Da Lat" }, { "subcategory": [ { "key": "province", "name": "Province" } ], "name": "Lam Dong Province" }, { "subcategory": [ { "key": "country", "name": "Country" } ], "name": "Vietnam" } ] } target_name = None # 遍历每个祖先节点 for node in location_data["ancestors"]: # 检查当前节点的subcategory列表 for sub_item in node["subcategory"]: if sub_item["key"] == "province": target_name = node["name"] break if target_name: break print(target_name) # 输出:Lam Dong Province
简单解释下逻辑:
- 遍历
ancestors数组里的每一个节点 - 对每个节点,检查它的
subcategory子数组中是否存在key等于province的项 - 一旦找到匹配的节点,直接提取它的
name字段,这就是你要的目标值
内容的提问来源于stack exchange,提问作者Nishant Sah
相关产品推荐
相关产品推荐

