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

Robot Framework发送POST请求时遭遇Int32反序列化错误的解决方案咨询

解决Robot Framework中JSON大数字反序列化Int32溢出问题

我帮你分析下这个问题——你遇到的是典型的JSON反序列化时Int32溢出问题,因为2412053228149000107这个数字比Int32的最大值(2147483647)大太多了。结合你的Robot Framework使用场景,给你几个可行的解决思路:

核心原因

后端尝试把传递的数值解析为Int32类型,但你的ID值远超该类型的范围。即使你尝试转成字符串,可能是替换或JSON转换过程中没有正确保留字符串类型,导致后端依然按数字解析。

解决方案

1. 修正JSON模板,强制保留字符串类型

调整你的RemoveOffer.json模板,给占位符额外添加一层转义引号,确保替换后数值被双引号包裹:

{
  "RemoveItems": [
    {
      "ProductId": "\"{{ProductId}}\"",
      "PricingPlanId": "\"{{PricingPlanId}}\""
    }
  ]
}

然后执行你的原有代码,替换后生成的字符串会是类似"ProductId": "2412053228149000107"的格式,Convert String To Json会将其识别为字符串类型传递给后端:

${remove_offer_payload}= Get File RemoveOffer.json
${str_payload}= Replace Variables ${remove_offer_payload}
${payload}= Convert String To Json ${str_payload}

可以在Replace Variables后加一句Log ${str_payload},确认替换后的格式是否正确

2. 用字典构建JSON(更可控)

放弃模板替换的方式,直接用Robot Framework的字典和列表API构建JSON结构,手动控制字段类型:

# 将大数字转为字符串类型
${product_id}= Set Variable 2412053228149000107
${product_id_str}= Convert To String ${product_id}

# 处理定价计划ID(同理转成字符串)
${pricing_plan_id}= Set Variable 你的定价计划ID值
${pricing_plan_id_str}= Convert To String ${pricing_plan_id}

# 构建单个移除项
${remove_item}= Create Dictionary ProductId=${product_id_str} PricingPlanId=${pricing_plan_id_str}
# 构建移除项列表
${remove_items}= Create List ${remove_item}
# 构建完整请求体
${payload_dict}= Create Dictionary RemoveItems=${remove_items}

# 转换为JSON字符串
${json_payload}= Convert To Json ${payload_dict} ensure_ascii=False

这种方式完全避免了模板替换的不确定性,能精准控制每个字段的类型。

3. 确认后端接口定义

如果前两种方法都无效,建议和后端团队确认:

  • 这些ID字段的预期类型是Int32、Int64还是字符串?
  • 如果是Int64,检查JSON转换是否把大数字转为了科学计数法(Robot Framework的Convert To Json默认支持大数字,但可以打印验证)。
  • 如果必须是Int32,那你当前使用的ID值本身不符合要求,需要确认是否用错了数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 09:48:14