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('<', '<').replace('>', '>') # 解析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
相关产品推荐
相关产品推荐

