JacksonのObjectNode
の内容を、ASCII(Unicodeエスケープ))として書かれたUTF-8文字を含む文字列に書き込みたいと思います。
サンプルメソッドは次のとおりです。
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"}
どうすればこれを達成できますか?
非ASCII文字のエスケープを制御するJsonGenerator機能を有効にする必要があります。以下に例を示します。
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"}