如何移除通过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
相关产品推荐
相关产品推荐

