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

如何使用RestAssured断言响应字符串体为JSON格式?

使用RestAssured断言响应体为有效JSON格式

要验证响应体的字符串是合法JSON,你可以通过以下几种方式替换代码中的XXX:

方法1:自定义Hamcrest Matcher(推荐)

创建一个可复用的自定义Matcher,让断言逻辑更清晰:

首先定义Matcher类:

import com.fasterxml.jackson.databind.ObjectMapper;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;

public class ValidJsonMatcher extends BaseMatcher<String> {
    private static final ObjectMapper objectMapper = new ObjectMapper();

    @Override
    public boolean matches(Object item) {
        if (!(item instanceof String)) {
            return false;
        }
        try {
            objectMapper.readTree((String) item);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    @Override
    public void describeTo(Description description) {
        description.appendText("a valid JSON string");
    }

    public static ValidJsonMatcher validJson() {
        return new ValidJsonMatcher();
    }
}

然后在断言中直接使用:

response.then().assertThat().body(validJson());

方法2:内联解析验证(快速实现)

如果不想额外定义类,可以在断言中直接嵌入解析逻辑:

import com.fasterxml.jackson.databind.ObjectMapper;

// 建议全局复用ObjectMapper实例
ObjectMapper objectMapper = new ObjectMapper();

response.then().assertThat().body(
    jsonStr -> {
        try {
            objectMapper.readTree((String) jsonStr);
            return true;
        } catch (Exception e) {
            return false;
        }
    },
    org.hamcrest.Matchers.is(true)
);

方法3:利用RestAssured自动解析特性

如果响应的Content-Type是application/json,RestAssured会自动尝试解析JSON内容,若格式不合法会直接抛出JsonParseException,此时无需额外断言——请求执行无异常即说明是有效JSON。但该方法仅适用于响应头标记为JSON类型的场景,不适用于纯文本格式返回的JSON字符串。

依赖补充

上述示例使用Jackson库做JSON解析,确保项目已引入对应依赖:

<!-- Maven依赖示例 -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version> <!-- 使用最新稳定版本 -->
</dependency>

若偏好Gson库,可替换为Gson的JsonParser实现验证逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:50:27