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

如何在Karate Feature中以标准JSON格式打印JS函数返回的结果数据

如何在Karate Feature中以标准JSON格式打印JS函数返回的结果数据

我明白你遇到的问题了——直接打印JS函数返回的对象时,只会显示[object Object],看不到实际的JSON结构对吧?别担心,有几种简单的方法可以解决这个问题,让你轻松看到格式化后的完整JSON数据:

方法一:使用JSON.stringify()序列化对象

你可以在打印时用JSON.stringify()把对象转换成标准JSON字符串,还能通过添加缩进参数让输出更美观。修改你最后的打印步骤即可:

And print "result: " + JSON.stringify(result, null, 2)

这里的null是用于过滤结果的参数(我们不需要过滤就传null),2是缩进空格数,这样输出的JSON会自动换行并缩进,可读性很强。

你也可以在JS函数内部的print语句里直接用这个方式,比如把函数里的打印改成:

print("json: " , JSON.stringify(jsonData, null, 2));

方法二:利用Karate内置的karate.pretty()工具函数

Karate本身提供了专门美化JSON输出的工具函数karate.pretty(),用它会更简洁,不需要手动处理JSON.stringify的参数:

And print karate.pretty(result)

这个方法会自动把对象格式化成带缩进的JSON字符串,直接打印出清晰的结构。

为什么原来的打印会显示[object Object]?

当你尝试把一个JS对象和字符串拼接(比如"result " + result)时,JS会自动调用对象的toString()方法,而默认情况下对象的toString()就会返回[object Object],这就是你看不到实际数据的原因。只有显式地把对象序列化为JSON字符串,才能看到完整的结构。

下面是修改后的完整Feature代码示例,你可以参考:

* def doWork =
"""
function(jsonData) {
    print("json: " , JSON.stringify(jsonData, null, 2));
    jsonData.programmingLanguage = 'Java'
    jsonData.framework = 'Karate'
    jsonData.array = [1,2,3,4]
    print("json: " , JSON.stringify(jsonData, null, 2));
    return jsonData
}
"""
* def jsonRequest = {name: "Karate Test", topic: "API Testing"}
* def result = doWork(jsonRequest)
And print "result: " + JSON.stringify(result, null, 2)

备注:内容来源于stack exchange,提问作者Shreyansh Jain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 09:33:00