Python提取JSON多级嵌套字段值的方法与示例

花开有时
花开有时
发布时间:2026-10-13 | 3人浏览过
原创

本文介绍如何在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中多级目录下某个值的介绍到此结束,希望能为读者提供参考。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表