java 将ObjectNode写入JSON字符串,并将UTF-8字符转换为转义ASCII

jtoj6r0c  于 12个月前  发布在  Java
关注(0)|答案(2)|浏览(96)

我想将Jackson的ObjectNode的内容写入一个字符串,其中UTF-8字符被写成ASCII(Unicode转义)。
下面是一个示例方法:

private String writeUnicodeString() {
    ObjectMapper mapper = new ObjectMapper();
    ObjectNode node = mapper.getNodeFactory().objectNode();
    node.put("field1", "Maël Hörz");
    return node.toString();
}

字符串
默认情况下,此输出:

{"field1":"Maël Hörz"}


我希望它输出的是:

{"field1":"Ma\u00EBl H\u00F6rz"}


我怎么能做到这一点?

f4t66c6m

f4t66c6m1#

您应该启用JsonGenerator功能,该功能控制非ASCII字符的转义。下面是一个示例:

ObjectMapper mapper = new ObjectMapper();
mapper.getFactory().configure(JsonGenerator.Feature.ESCAPE_NON_ASCII, true);
ObjectNode node = mapper.getNodeFactory().objectNode();
node.put("field1", "Maël Hörz");
System.out.println(mapper.writeValueAsString(node));

字符串
输出为:

{"field1":"Ma\u00EBl H\u00F6rz"}

5us2dqdw

5us2dqdw2#

JsonGenerator已弃用,请使用JsonWriteFeature代替。

mapper.getFactory().configure(JsonWriteFeature.ESCAPE_NON_ASCII.mappedFeature(), true);

字符串

相关问题