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

调用REST API提取指定字段报错:TypeError问题求助

问题解决:REST API响应解析与字段提取错误修复

问题场景

调用REST API时,需从适配器输出中提取OUT_Detailed Description和OUT_Vendor Ticket Number两个字段赋值给变量,但运行代码触发TypeError,同时存在字段提取失败问题。

错误原因

  1. 参数类型错误:json.loads()传入了requests的Response对象,而非JSON字符串或字节流,该方法仅接受可解析的JSON格式字符串/字节。
  2. 字段名拼写错误:代码中误写为OUT_Detailed Decription(多了一个字母c),与API返回的字段名OUT_Detailed Description不匹配。
  3. 响应结构处理错误:API返回的是数组格式的JSON,而非直接的键值对对象,无法通过键名直接取值。

修正后的代码

import requests
import json

# 假设authToken和get_query_inc_json()已正确定义
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())
)

# 直接用response.json()解析响应为Python列表
response_data = response.json()

# 初始化变量
Description = None
Ref_Number = None

# 遍历数组提取目标字段
for item in response_data:
    if item['name'] == 'OUT_Detailed Description':
        Description = item['value']
    elif item['name'] == 'OUT_Vendor Ticket Number':
        Ref_Number = item['value']

# 验证结果
print(f"详细描述: {Description}")
print(f"厂商工单编号: {Ref_Number}")

关键修正说明

  • 使用response.json():requests库内置方法,自动处理响应的JSON解析,无需手动调用json.loads(response.text),避免类型错误。
  • 遍历响应数组:API返回的是包含多个字段对象的数组,通过循环匹配name字段,提取对应的value值。
  • 修正字段名拼写:将错误的OUT_Detailed Decription改为正确的OUT_Detailed Description,确保字段匹配成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:45:12