将 ObjectNode 写入 JSON 字符串,并使用 UTF-8 字符转义 ASCII

2022-09-01 03:02:34

我想将Jackson的内容写到一个字符串中,UTF-8字符写为ASCII(Unicode转义)。ObjectNode

下面是一个示例方法:

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

我该如何做到这一点?


答案 1

您应该启用 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"}

答案 2

JsonGenerator已弃用,使用JsonWriteFeature代替它

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