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

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

我怎么能做到这一点?

您应该启用JsonGeneratorfunction,该function控制非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"}