Python如何实现类似Node.js读取JSON文件指定属性值的功能?
Python 读取JSON嵌套属性的方法
Python中json.load()会将JSON对象转为Python字典,嵌套的JSON对象对应嵌套字典,你可以通过以下几种方式读取指定属性:
1. 基础嵌套取值(确认所有层级key存在时使用)
直接通过多层中括号拼接即可拿到对应值,你的代码可以修改为:
import json as js # 推荐使用with上下文管理器读取文件,会自动关闭文件句柄,避免资源泄漏 with open('hello.json', 'r', encoding='utf-8') as data_json: data_worker = js.load(data_json) # 直接读取worker_01下的name属性 name = data_worker['worker_01']['data']['name'] print(name) # 输出结果为 Juan
如果某一层的key不存在,这种写法会抛出KeyError,适合你确认JSON结构固定的场景。
2. 安全取值(避免key不存在时报错)
可以使用字典自带的get()方法,每层设置默认的空字典兜底,就算中间某层key不存在也会返回你设置的默认值,不会报错:
# 第二个参数为对应层级key不存在时的返回值,最终兜底默认值可以自定义 safe_name = data_worker.get('worker_01', {}).get('data', {}).get('name', '默认姓名') print(safe_name)
3. 实现类似Node.js的路径式取值
如果你想要和Node.js里的路径写法用法保持一致,可以自己封装一个工具函数:
def get_by_path(data: dict, path: str, default=None): # 按点拆分路径为key列表 key_list = path.split('.') current_val = data for key in key_list: if isinstance(current_val, dict) and key in current_val: current_val = current_val[key] else: # 任意一层key不存在就返回默认值 return default return current_val # 调用方式和你之前在Node.js中的用法非常接近 name = get_by_path(data_worker, 'worker_01.data.name') print(name) # 输出结果为 Juan
内容的提问来源于stack exchange,提问作者Carlos Gross
相关产品推荐
相关产品推荐

