Python如何查找JSON指定值并返回其包含的各级子对象
Python嵌套JSON数据提取方案
首先你需要调用Python内置的json模块,把JSON字符串/文件加载为Python字典,加载后的数据结构和原JSON完全对应,按照层级取对应key就能拿到目标数据。
基础加载代码
import json # 若JSON存储在文件中,替换为 data = json.load(open("你的文件路径.json")) json_raw = ''' { "example1": { "alpha": "bravo", "charlie": "delta", "echo": { "foxtrot": "golf", "hotel": "india", "juliett": { "kilo": "lima", "mike": "november" } } }, "example2": { "alpha": "bravo", "charlie": "delta", "echo": { "foxtrot": "golf", "hotel": "india", "juliett": { "kilo": "lima", "mike": "november" } } } } ''' data = json.loads(json_raw)
各层级数据提取方法
提取一级对象(example1、example2)
直接遍历字典的键值对,或者指定key取值即可:# 遍历所有一级对象 for first_level_key, first_level_val in data.items(): print(f"一级键名:{first_level_key},对应数据:{first_level_val}") # 单独取example1的所有数据 example1 = data["example1"]提取echo下的二级数据
echo是一级对象下的二级key,拿到一级对象的值后直接取echo对应值即可:for first_key, first_val in data.items(): echo_data = first_val["echo"] print(f"{first_key}下的echo二级数据:{echo_data}") # 也可以直接取echo下的单个字段,比如foxtrot foxtrot_val = echo_data["foxtrot"]提取juliett下的三级数据
juliett是echo下的三级key,拿到echo的二级数据后再取juliett对应值即可:for first_key, first_val in data.items(): juliett_data = first_val["echo"]["juliett"] print(f"{first_key}下的juliett三级数据:{juliett_data}") # 直接取juliett下的单个字段 kilo_val = juliett_data["kilo"] mike_val = juliett_data["mike"]
小提示
如果不确定某一层的key是否存在,可以用dict.get("key名")方法取值,取不到的话会返回None不会抛出异常,比如first_val.get("echo")。
内容的提问来源于stack exchange,提问作者lemuria
相关产品推荐
相关产品推荐

