如何用Python从嵌套JSON数据中提取最内层的最终值?
如何用Python稳定提取嵌套JSON的最内层值
嘿,要解决这个问题其实不难,核心思路就是递归遍历嵌套的字典结构,一直钻到最底层的非字典值就行。毕竟你的输入都是单路径的嵌套JSON(每一层都只有一个键值对往下走),所以这个方法能稳定拿到你要的最终值。
具体实现步骤
- 解析JSON字符串:首先把列表里的JSON字符串转换成Python的字典对象,用
json模块的loads()方法。 - 递归查找最内层值:写一个函数,判断当前对象是不是字典——如果是,就继续遍历它的值并递归;如果不是,就返回这个值(这就是最内层的目标值)。
完整代码示例
import json def get_inner_most_value(obj): # 如果当前对象是字典,继续深入遍历它的值 if isinstance(obj, dict): # 因为你的结构是单路径嵌套,直接取第一个值递归即可 for value in obj.values(): return get_inner_most_value(value) # 不是字典,说明已经到最内层,返回当前值 else: return obj # 测试第一种情况 data1 = ['{"osc":{"version":"1.0"}}'] parsed_data1 = json.loads(data1[0]) print(get_inner_most_value(parsed_data1)) # 输出: 1.0 # 测试第二种情况 data2 = ['{"device":{"network":{"ipv4_dante":{"auto":"testing"}}}}'] parsed_data2 = json.loads(data2[0]) print(get_inner_most_value(parsed_data2)) # 输出: testing
补充说明
如果你的JSON结构偶尔会出现多分支(比如某一层有多个键值对),这个函数会返回第一个分支的最内层值。如果需要处理这种情况,可以修改函数,比如收集所有最内层值返回一个列表——不过根据你给出的例子,单路径的情况用上面的代码就完全够用啦。
内容的提问来源于stack exchange,提问作者nrs
相关产品推荐
相关产品推荐

