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

如何让Karate解析JSON时保留重复属性?

在Karate中保留JSON重复属性的解决方法

Karate默认解析JSON时会遵循标准JSON规范,自动合并/移除重复的键值对。如果要测试需要发送含重复属性的请求,核心思路是绕开Karate的JSON解析逻辑,直接发送原始文本格式的请求体。

方法1:直接使用原始字符串构造请求体

将包含重复属性的JSON内容用三重引号包裹,作为原始文本传入request关键字,Karate会直接发送该字符串,不会进行JSON解析去重:

Given url "你的目标API地址"
And header Content-Type = "application/json"
And request """
{
  "Test": {
    "number": "12344",
    "number": "12344"
  }
}
"""
When method post
Then status 200

方法2:动态拼接请求体字符串

如果需要动态生成带重复属性的请求,可以通过字符串拼接的方式构造请求体,同样以原始文本形式发送:

* def duplicateNumberFields = '"number": "12344", "number": "12344"'
* def requestBody = '{"Test": {' + duplicateNumberFields + '}}'

Given url "你的目标API地址"
And header Content-Type = "application/json"
And request requestBody
When method post
Then status 200

注意事项

标准JSON规范并不允许对象中存在重复的键,大部分后端框架处理这类请求时的行为也不确定,但如果你的测试场景确实需要模拟这种异常请求,以上两种方法可以满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:20:41