Подтвердить что ты не робот

Запись ObjectNode в строку JSON с символами UTF-8 для экранированного ASCII

Я хотел бы написать содержимое Jackson ObjectNode в строку с символами UTF-8, написанными как ASCII (Unicode escaped).

Вот пример метода:

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

Как я могу это сделать?

4b9b3361

Ответ 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"}