You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python JSON解析求助:如何从复杂API响应中提取型号名称

从API JSON响应中提取型号名称

先看你的JSON结构,Items是个二维数组,里面的子数组包含了你要的键值对。直接用Python的json模块解析后,遍历目标列表就能拿到型号名称:

import json

# 实际开发中可直接用请求库返回的响应内容,这里用示例字符串演示
api_response = '''
{
  "Bookmark": "<B><P><p>SerNum</p><p>Item</p></P><D><f>false</f><f>false</f></D><F><v>1101666</v><v>ADDMASTER IJ7102-23E</v></F><L><v>123456</v><v>Model Name</v></L></B>",
  "Items": [
    [
      {
        "Name": "SerNum",
        "Value": "123456"
      },
      {
        "Name": "Item",
        "Value": "Model Name"
      },
      {
        "Name": "_ItemId",
        "Value": "PBT=[unit] unt.DT=[2021-07-28 08:20:33.513] unt.ID=[eae2621d-3e9f-4515-9763-55e67f65fae6]"
      }
    ]
  ],
  "Message": "Success",
  "MessageCode": 0
}
'''

# 解析JSON为Python字典
data = json.loads(api_response)

# 取出Items里的内层字典列表(因为Items是数组套数组)
target_items = data['Items'][0]

# 遍历找到Name为"Item"的条目,提取对应的Value
model_name = next(item['Value'] for item in target_items if item['Name'] == 'Item')

print(model_name)  # 输出:Model Name

如果你要的是Bookmark字段里的具体型号值(比如ADDMASTER IJ7102-23E),这个字段是XML格式的字符串,需要转义后解析:

import xml.etree.ElementTree as ET

# 替换HTML实体为正常XML标签
bookmark_content = data['Bookmark'].replace('&lt;', '<').replace('&gt;', '>')
# 解析XML结构
root = ET.fromstring(bookmark_content)
# 定位到<F>下的第二个<v>标签,取出文本内容
specific_model = root.find('./F/v[2]').text

print(specific_model)  # 输出:ADDMASTER IJ7102-23E

关键点说明

  • Items是二维数组,必须先取data['Items'][0]拿到内层的字典列表,这是容易踩坑的地方。
  • 首行的Bookmark字段只是普通字符串,不会干扰JSON解析,不用额外处理。
  • 两个提取结果的区别:Items里的是型号名称的标识,Bookmark里的是具体的型号值,按需选择即可。

内容的提问来源于stack exchange,提问作者Greg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 20:40:17