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

Robot Framework中HTTP请求JSON数组处理及PATCH请求解析报错求助

解决Robot Framework中PATCH请求JSON数组的处理问题

你的问题出在没有正确将数组数据处理成服务器期望的JSON格式。错误提示里的Expected BEGIN_ARRAY but was BEGIN_OBJECT说明服务器期待接收JSON数组([]包裹的结构),但实际收到的是不符合要求的对象格式,根源是你用Set Variable定义的${jsonString}是Robot Framework的列表对象,而非正确的JSON字符串,或者传递时没有被正确序列化。

下面给你两种可行的解决方案:

方法一:使用json参数直接传递列表(推荐)

RequestsLibrary的Patch Request关键字支持json参数,直接传入Robot Framework的列表对象即可——它会自动帮你完成JSON序列化,并且自动设置Content-Type: application/json请求头,省去手动处理的麻烦。

示例代码:

*** Test Cases ***
Send Patch With JSON Array
    ${templateId}    Set Variable    12345678-1111-1111-1111-11111111
    # 直接定义要发送的数组结构
    ${json_data}    Set Variable    [{"alias":"EMAIL_ORDER_CONFIRMATION","templateId":"${templateId}"}]
    # 使用json参数传递数据
    ${resp}    Patch Request    httpbin    /templates    json=${json_data}    headers=${headers}

如果你的数组需要动态构建(比如添加多个元素),可以用Create List和Append To List来操作:

${json_data}    Create List    ${EMPTY}
${item1}    Create Dictionary    alias=EMAIL_ORDER_CONFIRMATION    templateId=${templateId}
Append To List    ${json_data}    ${item1}
# 可以继续添加更多元素
${resp}    Patch Request    httpbin    /templates    json=${json_data}    headers=${headers}

方法二:手动转换为JSON字符串再传递

如果你更倾向于使用data参数,需要先把列表对象转换成标准的JSON字符串,同时确保请求头里明确设置Content-Type: application/json。

示例代码:

*** Test Cases ***
Send Patch With JSON String
    ${templateId}    Set Variable    12345678-1111-1111-1111-11111111
    # 定义列表对象
    ${json_list}    Set Variable    [{"alias":"EMAIL_ORDER_CONFIRMATION","templateId":"${templateId}"}]
    # 转换为JSON字符串
    ${jsonString}    Convert To Json    ${json_list}
    # 确保请求头包含正确的Content-Type
    ${headers}    Create Dictionary    Content-Type=application/json
    # 发送请求
    ${resp}    Patch Request    httpbin    /templates    data=${jsonString}    headers=${headers}

为什么原来的代码会出错?

你之前的代码中,${jsonString}是Robot Framework的原生列表对象,当传给data参数时,RequestsLibrary不会自动将其序列化为JSON数组,反而可能把它解析成表单数据或者其他不符合预期的格式,导致服务器接收到的不是正确的JSON数组结构,从而触发解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:19:02