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

如何高效从REST API返回的混合格式响应中提取指定字段(事件编号与描述)

如何高效从REST API返回的混合格式响应中提取指定字段(事件编号与描述)

嘿,我来给你支个靠谱的招!用切片提取数据确实太脆弱了——只要返回内容的长度、格式稍有变化,代码就会失效。针对你这种情况,最稳妥高效的方式是专门解析XML内容,毕竟适配器返回的Adapter_Output是标准的XML格式,天生就适合做结构化数据提取。

下面是具体的实现步骤和代码:

步骤1:解析外层JSON,取出XML字符串

首先把API返回的JSON响应解析成Python对象,从中提取出XML格式的适配器输出内容:

import json
import xml.etree.ElementTree as ET
import requests

# 你的原有请求代码
headers = {'content-type': 'application/json', 'Authentication-Token': authToken}
response = requests.post(
    'http://dev.startschools.local:2031/baocdp/rest/process/:ITSM_Interface:IncidentManagement:QueryIncident/execute',
    headers=headers,
    data=json.dumps(get_query_inc_json())
)

# 解析外层JSON,拿到XML字符串
response_data = json.loads(response.text)
xml_content = response_data[0]['value']

步骤2:解析XML,提取目标字段

接下来用Python内置的xml.etree.ElementTree模块解析XML,遍历每个事件条目,提取事件编号和描述:

# 解析XML内容
root = ET.fromstring(xml_content)

# 初始化存储结果的列表
incident_numbers = []
descriptions = []

# 遍历所有事件条目
for entry in root.findall('.//entry'):
    # 提取事件编号
    inc_num = entry.find("./field[@name='Incident Number']").text
    # 提取描述
    desc = entry.find("./field[@name='Description']").text
    # 添加到对应列表
    incident_numbers.append(inc_num)
    descriptions.append(desc)

# 查看结果
print("事件编号列表:", incident_numbers)
print("描述列表:", descriptions)

运行这段代码后,你就能得到想要的两个列表:

事件编号列表: ["INC000021", "INC000035"]
描述列表: ["Student needs a new card issued", "Students cannot access the text book portal"]

额外优化:用字典列表关联字段(更推荐)

如果后续需要同时处理事件编号和描述,把它们放在同一个字典里会更方便,避免索引错位的问题:

incidents = []
for entry in root.findall('.//entry'):
    inc_num = entry.find("./field[@name='Incident Number']").text
    desc = entry.find("./field[@name='Description']").text
    incidents.append({
        "incident_number": inc_num,
        "description": desc
    })

# 遍历使用示例
for inc in incidents:
    print(f"事件{inc['incident_number']}: {inc['description']}")

这种方法的优势在于:不管返回多少条事件,或者XML里的字段顺序如何变化,只要字段的name属性不变,就能准确提取数据,完全不用依赖字符串切片这种不稳定的方式。

备注:内容来源于stack exchange,提问作者Dinerz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 10:42:35