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

Java API自动化:无需转义符直接传递JSON请求体的方案咨询

Java无转义符编写JSON请求体的可行方案

首先明确:你贴的第二种直接把{...}赋值给String的写法在Java里根本编译不过,因为Java规定字符串必须用双引号包裹,裸写JSON结构会被当成语法错误。下面给你几种不用手动加转义符的实用方案:

1. Java 15+ 自带文本块(无需额外依赖)

从Java 15开始,支持用三个双引号"""包裹的文本块,里面可以直接写带格式的JSON,不用转义引号,甚至换行都不用手动处理:

public static String postRequest() {
    // 带格式的JSON,输出会保留换行和缩进
    String payload = """
        {
            "name":"morpheus",
            "job":"leader"
        }""";
    return payload;
}

如果要无格式化的紧凑JSON,直接把内容挤成一行即可:

public static String postRequest() {
    String payload = """{"name":"morpheus","job":"leader"}""";
    return payload;
}

2. 用JSON序列化库(推荐,适合复杂场景)

如果请求体需要动态生成、字段较多,直接写字符串容易出错,推荐用Jackson或Gson这类库,把Java对象自动转成JSON字符串,全程不用手动写JSON:

Jackson实现步骤

  1. 引入Maven依赖(Gradle同理):
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>
  1. 定义与JSON结构对应的实体类:
class UserPayload {
    private String name;
    private String job;

    // 全参构造方法
    public UserPayload(String name, String job) {
        this.name = name;
        this.job = job;
    }

    // 必须提供getter/setter,否则Jackson无法序列化
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getJob() { return job; }
    public void setJob(String job) { this.job = job; }
}
  1. 生成JSON字符串:
import com.fasterxml.jackson.databind.ObjectMapper;

public static String postRequest() throws Exception {
    UserPayload payload = new UserPayload("morpheus", "leader");
    ObjectMapper mapper = new ObjectMapper();
    // 生成无格式的紧凑JSON
    return mapper.writeValueAsString(payload);
}

Gson实现步骤

  1. 引入Maven依赖:
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>
  1. 生成JSON字符串:
import com.google.gson.Gson;

public static String postRequest() {
    UserPayload payload = new UserPayload("morpheus", "leader");
    Gson gson = new Gson();
    return gson.toJson(payload);
}

3. 直接用HTTP客户端传对象(API自动化更高效)

如果是做API自动化测试,RestAssured、OkHttp这类HTTP客户端库支持直接把Java对象作为请求体传递,内部会自动完成JSON序列化,连生成字符串的步骤都省了:

RestAssured示例

import io.restassured.RestAssured;

public static void sendPostRequest() {
    UserPayload payload = new UserPayload("morpheus", "leader");
    RestAssured.given()
        .contentType("application/json")
        .body(payload) // 直接传对象,自动转JSON
        .post("你的API接口地址");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:40:28