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

如何移除通过Javax创建的JsonObject中的额外转义引号

解决Javax Json添加字符串JSON时的转义引号问题

你的问题根源在于:直接将字符串形式的JSON对象传入JsonArrayBuilder.add()方法时,Javax Json API会把这些字符串当作普通文本处理,自动转义其中的双引号,最终导致输出出现多余的\"。

要解决这个问题,你需要先把每个字符串解析成JsonObject实例,再将解析后的对象添加到数组中,而不是直接添加字符串。

修正后的代码

import javax.json.Json;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
import javax.json.JsonReader;
import java.io.StringReader;

// ... 你的其他代码

JsonArrayBuilder jsonArray = Json.createArrayBuilder(); 
for (String jsonStr : listOfJsonDfObjects) {
    // 将字符串格式的JSON解析为JsonObject
    try (JsonReader reader = Json.createReader(new StringReader(jsonStr))) {
        JsonObject jsonObj = reader.readObject();
        jsonArray.add(jsonObj);
    }
}

// 构建最终的JsonObject,此时不会出现额外转义
javax.json.JsonObject data = Json.createObjectBuilder()
   .add("data", jsonArray.build()).build();  

关键说明

  • 使用JsonReader配合StringReader,将每个字符串形式的JSON解析为标准的JsonObject,这样添加到数组时,API会识别这是合法的JSON对象,而非普通文本,因此不会对引号进行转义。
  • 采用try-with-resources语法自动关闭JsonReader,避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:45:45