如何从含多段相似结构的JSON文件中精准检索指定数据?
从多段结构的JSON文件中检索指定数据的更优方案
你的字符串查找方法确实太脆弱了——一旦JSON里的字段顺序变了、空格数量调整了,或者ID长度不一样,代码直接就失效了。咱们用标准的JSON解析方式来解决这个问题才是正道,步骤如下:
首先,注意你的JSON内容其实是多个对象用逗号分隔,但缺少外层的数组包裹(这其实不是合法的JSON格式),所以第一步要先把它转换成合法的JSON数组,再进行解析。
完整代码实现
import json # 读取文件内容 with open("C:\\the_file.json") as data_file: raw_data = data_file.read().strip() # 处理成合法的JSON数组(因为原内容是多个对象用逗号分隔) valid_json = f"[{raw_data}]" # 解析JSON data_list = json.loads(valid_json) # 遍历查找目标数据 target_id = None for item in data_list: if item.get("People") == "John": target_id = item["ID"] break # 输出结果 if target_id: print(target_id) # 会输出 OI85 else: print("未找到匹配的记录")
为什么这是更优的方法?
- 健壮性强:不管JSON里的字段顺序如何变化、有没有额外的空格,都能正确解析,不会像字符串查找那样因为位置偏移出错。
- 可读性高:代码逻辑清晰,一眼就能看出来是在查找People为John的记录,维护起来更方便。
- 扩展性好:如果以后要查找其他字段,或者添加更多筛选条件,只需要修改遍历里的判断逻辑就行。
如果你的JSON文件本身就是合法的数组格式(已经有外层的[]),那可以直接跳过处理成合法JSON的步骤,直接用json.load(data_file)加载即可。
内容的提问来源于stack exchange,提问作者Mark K
相关产品推荐
相关产品推荐

