将 ObjectNode 写入 JSON 字符串,其中 UTF-8 字符转义 ASCII

问题描述 投票:0回答:2

我想将 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"}

我怎样才能做到这一点?

java json unicode utf-8 jackson
2个回答
67
投票

您应该启用

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"}

10
投票

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

mapper.getFactory().configure(JsonWriteFeature.ESCAPE_NON_ASCII.mappedFeature(), true);
© www.soinside.com 2019 - 2024. All rights reserved.