Python提取JSON多级嵌套字段值的方法与示例
本文介绍如何在Python中提取JSON字符串或对象中多级嵌套目录下的特定字段值。通过将JSON字符串转换为字典,利用Key进行循环遍历,可精准获取如itemstring等深层数据。文中包含Python处理腾讯API返回值的实例,并补充了Java语言中解析类似JSON结构的对比代码,帮助开发者理解不同语言下的JSON层级提取逻辑。
Python提取JSON多级嵌套字段的核心思路
在处理包含多级目录结构的字符串或JSON数据时,提取特定层级的某个值是一个常见需求。
以下通过一个具体案例来说明这一过程。
假设从API接口接收到的response数据包含复杂的嵌套结构。
我们的目标是从中提取出itemstring字段的值,忽略其他无关字段。

核心思路是将字符串类型的JSON数据转换为Python字典(dict)格式,随后通过遍历Key的方式逐级取值。
具体而言,data是一个字典对象,其中item_list是data的一个Key,其对应的值是一个数组。该数组中的每个元素本身也是一个字典。
因此,这本质上是一个通过字典的多级路径按Key取值的过程。
Python代码实现与结果分析
# 多级目录提取-dict
print(type(response))
print(type(response.text))
result = json.loads(resp.text) # 字符串转字典
print(type(result))
for i in result["data"]["item_list"]:
print(i["itemstring"])
结果》》》
<class 'requests.models.Response'>
<class 'str'>
<class 'dict'>
提取的值。。。。。。出现
经过上述处理,最终获取到的数据结构如下所示。
遍历后得到的所有itemstring字段的值列表即为所需结果。

实际应用案例:腾讯API数据提取
直观可见的数据部分即为最终需要的内容。例如,在调用腾讯API时,返回的JSON数据包含N个字段,通过上述方法可以仅提取出OCR识别相关的部分,舍弃其他冗余信息。
作为补充拓展,这里展示按照JSON层级提取各个字段的完整实例。
具体数据结构如下所示。
Java语言中的JSON层级提取对比
String s = "{\"error\":0,\"status\":\"success\",\"results\":[{\"currentCity\":\"青岛\",\"index\":[{\"title\":\"穿衣\",\"zs\":\"较冷\",\"tipt\":\"穿衣指数\",\"des\":\"建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。\"},{\"title\":\"紫外线强度\",\"zs\":\"最弱\",\"tipt\":\"紫外线强度指数\",\"des\":\"属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。\"}],}]}";
JSONObject jsonObject = JSON.parseObject(s);
//提取出error为 0
int error = (int) jsonObject.get("error");
System.out.println("error:" + error);
//提取出status为 success
String status = jsonObject.getString("status");
System.out.println("status:" + status);
//注意:results中的内容带有中括号[],所以要转化为JSONArray类型的对象
JSONArray result = jsonObject.getJSONArray("results");
for (int i = 0; i < result.size(); i++) {
//提取出currentCity为 青岛
String currentCity = result.getJSONObject(i).getString("currentCity");
System.out.println("currentCity:" + currentCity);
//注意:index中的内容带有中括号[],所以要转化为JSONArray类型的对象
JSONArray index = result.getJSONObject(i).getJSONArray("index");
for (int j = 0; j < index.size(); j++) {
String title = index.getJSONObject(j).getString("title");
System.out.println("title:" + title);
String zs = index.getJSONObject(j).getString("zs");
System.out.println("zs:" + zs);
String tipt = index.getJSONObject(j).getString("tipt");
System.out.println("tipt:" + tipt);
String des = index.getJSONObject(j).getString("des");
System.out.println("des:" + des);
}
}
}
以上关于Python实现提取str字符串或JSON中多级目录下某个值的介绍到此结束,希望能为读者提供参考。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













