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

如何在TestNG中用Rest Assured逐行格式化打印API响应

解决API响应单行打印问题

嘿,这个问题我之前也碰到过!你现在用body.asString()拿到的是服务器返回的原始字符串,很多API会把响应压缩成单行来减少传输体积,所以打印出来就是一团糟。要实现Postman那样的格式化输出,有几个简单的办法:

方法1:用RestAssured自带的格式化方法

从代码里的ResponseBody来看,你大概率用的是RestAssured框架,它本身就提供了现成的格式化工具,不用额外引入依赖:

直接打印格式化后的响应

response.getBody().prettyPrint();

这个方法会自动识别响应格式(JSON/XML都支持),直接输出带缩进、换行的结构化内容,和Postman里的效果几乎一样。

获取格式化后的字符串再自定义打印

如果你想保留自己的提示语(比如原来的"Response Body is: "),可以用asPrettyString():

String formattedResponseBody = response.getBody().asPrettyString();
System.out.println("Response Body is: " + formattedResponseBody);

方法2:用第三方JSON库手动格式化(适合非RestAssured场景)

如果你的项目里已经用到了Jackson或者Gson这类JSON处理库,也可以用它们来手动格式化字符串:

用Jackson实现

import com.fasterxml.jackson.databind.ObjectMapper;

// 初始化ObjectMapper
ObjectMapper objectMapper = new ObjectMapper();
// 拿到原始响应字符串
String rawBody = response.getBody().asString();
// 解析并格式化
String formattedBody = objectMapper.writerWithDefaultPrettyPrinter()
                                   .writeValueAsString(objectMapper.readTree(rawBody));
// 打印
System.out.println("Response Body is: " + formattedBody);

用Gson实现

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

// 初始化带格式化配置的Gson实例
Gson gson = new GsonBuilder().setPrettyPrinting().create();
// 拿到原始响应字符串
String rawBody = response.getBody().asString();
// 解析后再转成格式化字符串
Object jsonObject = gson.fromJson(rawBody, Object.class);
String formattedBody = gson.toJson(jsonObject);
// 打印
System.out.println("Response Body is: " + formattedBody);

这两种方法都能把单行的JSON字符串转换成带缩进、换行的结构化内容,和Postman的展示效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:41:21