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

如何在Java中读取JSON文件并修改其中指定变量(如username)

如何修改JSON中的username字段值

你可以用Java常用的JSON处理库(Jackson或Gson)来解析读取到的JSON字符串,修改指定字段后再转为字符串作为请求体。下面是两种可行的实现方式:

方式一:使用Jackson库

先确保项目引入了Jackson核心依赖(Maven/Gradle项目可在配置文件中添加对应依赖),然后修改你的方法如下:

@When("^I send share privately api$")
public void sharePrivately() throws IOException {
    // 读取JSON文件为字符串
    String body = new String(Files.readAllBytes(Paths.get("src/test/resources/config/environments/sharePrivately.json")));
    
    // 使用Jackson解析并修改字段
    ObjectMapper objectMapper = new ObjectMapper();
    ObjectNode rootNode = objectMapper.readValue(body, ObjectNode.class);
    // 获取invitees数组的第一个元素,修改username字段
    ArrayNode inviteesNode = rootNode.get("invitees").deepCopy();
    ObjectNode firstInvitee = inviteesNode.get(0).deepCopy();
    firstInvitee.put("username", "new-test-user@example.com"); // 替换为你需要的新值
    inviteesNode.set(0, firstInvitee);
    rootNode.set("invitees", inviteesNode);
    // 转回修改后的JSON字符串
    String modifiedBody = objectMapper.writeValueAsString(rootNode);

    RequestSpecification header = rh.share(payload.userAuth());

    response = header.body(modifiedBody)
            .when()
            .post("/shares")
            .then()
            .assertThat()
            .extract()
            .response();
    System.out.println(response.getStatusCode());
}

方式二:使用Gson库

如果更习惯用Gson,先确保项目引入Gson依赖,再修改方法:

@When("^I send share privately api$")
public void sharePrivately() throws IOException {
    String body = new String(Files.readAllBytes(Paths.get("src/test/resources/config/environments/sharePrivately.json")));
    
    // 使用Gson解析并修改字段
    Gson gson = new Gson();
    JsonObject rootObject = gson.fromJson(body, JsonObject.class);
    // 获取invitees数组
    JsonArray inviteesArray = rootObject.getAsJsonArray("invitees");
    // 修改第一个元素的username
    JsonObject firstInvitee = inviteesArray.get(0).getAsJsonObject();
    firstInvitee.addProperty("username", "new-test-user@example.com"); // 设置新的用户名
    
    // 转回修改后的JSON字符串
    String modifiedBody = gson.toJson(rootObject);

    RequestSpecification header = rh.share(payload.userAuth());

    response = header.body(modifiedBody)
            .when()
            .post("/shares")
            .then()
            .assertThat()
            .extract()
            .response();
    System.out.println(response.getStatusCode());
}

两种方式核心逻辑一致:把JSON字符串转成可操作的JSON节点/对象,定位到invitees数组的第一个元素,修改username字段后再转回字符串,最后用修改后的字符串作为请求体发送接口请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:10:44