如何打开JSON文件提取引号内数据并保存为独立变量?
JSON内容提取与变量存储实现方案
使用Python内置的json标准库即可完成需求,无需安装第三方依赖,具体实现方式如下:
- 按JSON原有层级手动映射变量:适合结构固定、需要明确变量语义的场景,不会出现变量名冲突问题
- 递归自动提取所有字符串生成变量:适合结构不固定、需要批量提取所有引号包裹内容的场景
方式1:按层级手动映射变量(推荐)
先把JSON文件解析为Python字典结构,再按照JSON的嵌套层级直接索引取值,赋值给自定义变量即可,对应给出的JSON示例代码如下:
import json # 读取并解析目标JSON文件,注意替换为你自己的文件路径 with open("target.json", "r", encoding="utf-8") as file: data = json.load(file) # 按层级提取内容赋值为独立变量 # 根节点 class_data = data["class"] # 学生1相关字段 s1_info = class_data["student1"] s1_id = s1_info["studentID"] s1_grade = s1_info["Campbell"]["Sims"]["grade"] s1_class_size = s1_info["Campbell"]["Sims"]["class_size"] # 学生2相关字段 s2_info = class_data["student2"] s2_id = s2_info["studentID"] s2_grade = s2_info["Williams"]["Johnson"]["grade"] s2_class_size = s2_info["Williams"]["Johnson"]["class_size"] # 其他场景可直接调用上述变量 print(s1_id) # 输出:20345 print(s2_class_size) # 输出:25
方式2:递归自动提取所有引号包裹的内容
如果需要自动提取JSON里所有被引号包裹的键、字符串值,批量生成独立变量,可以通过递归遍历JSON结构动态注册全局变量,代码如下:
import json def extract_strings(node, var_prefix="json_val"): if isinstance(node, dict): for key, val in node.items(): # 将JSON键(引号包裹内容)注册为变量 globals()[f"{var_prefix}_{key}"] = key # 递归处理下一层 extract_strings(val, f"{var_prefix}_{key}") elif isinstance(node, str): # 将字符串值(引号包裹内容)注册为变量 globals()[var_prefix] = node # 加载JSON文件 with open("target.json", "r", encoding="utf-8") as file: data = json.load(file) # 执行批量提取 extract_strings(data) # 直接调用自动生成的变量即可 print(json_val_class_student1_studentID) # 输出:20345 print(json_val_class_student2_Williams_Johnson_grade) # 输出:3
注意:如果JSON结构中存在重名键,自动提取方式会出现变量覆盖问题,重名场景建议使用第一种手动映射的方式。
内容的提问来源于stack exchange,提问作者Jtigg
相关产品推荐
相关产品推荐

