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

如何解析Multipart/form-data响应中的JSON并在Karate中做断言?

问题

我们有一个返回multipart/form-data类型响应的API(响应头content-type = multipart/form-data;boundary=c7YW4wo4MTvgK-QvlRbnRe5FMPAkY-)。响应中包含JSON数据,若关联有PDF文件,也会以multipart/form-data形式返回(PDF内容显示为乱码)。

目前在Karate回归测试套件中采用文本断言,代码如下:

And match response contains "ACTIVE"
And match response contains CustomerID

希望增强JSON部分的断言逻辑,请问是否可以解析该multipart响应中的JSON,并使用Karate常规的断言方式进行验证?

解决方案

完全可以!Karate内置了对multipart响应的解析能力,你可以直接提取响应中的JSON部分并进行结构化断言,具体步骤如下:

  • 提取并解析JSON部分
    Karate会自动将multipart响应转化为列表结构,你可以通过索引定位到JSON对应的分片(通常是第一个分片,索引为0),用response[0].body获取JSON文本内容,再通过karate.fromString()将其转为可操作的JSON对象。

  • 执行结构化断言
    拿到JSON对象后,就能用Karate标准的match语法做精准断言,比如验证字段值、数据类型或对象结构。

示例代码:

# 提取multipart中的JSON分片并转为JSON对象
* def jsonText = response[0].body
* def jsonData = karate.fromString(jsonText)

# 常规结构化断言
* match jsonData.status == "ACTIVE"
* match jsonData.customerId == CustomerID
# 额外验证对象结构示例
* match jsonData contains { name: '#string', contact: '#object' }
  • 可选:验证PDF分片
    如果需要确认PDF分片的存在,可通过对应索引访问(比如response[1]),检查其响应头的内容类型:
* match response[1].headers['Content-Type'] == 'application/pdf'

若不确定JSON分片的索引,可先打印整个响应结构确认:

* print response

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:12:33