Jackson JsonNode для строки с отсортированными клавишами

Я использую Jackson 2.2.3 и вам нужно преобразовать дерево JsonNode в строку с отсортированными ключами поля. Мне совершенно непонятно, как это сделать, тем более, что все наоборот - JsonNode jn = ObjectMapper.readTree(String s).

Похоже, что правильный метод void writeTree(JsonGenerator jgen,JsonNode rootNode). Однако я не вижу возможности сериализованного String из JsonGenerator. Я полагаю, что SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS все равно будет применяться, поскольку JsonGenerator.Feature не имеет этой опции. Есть ли более простой способ сделать это - или, если нет, как получить сериализованную строку из JsonGenerator?

Ответы

Ответ 1

Это самый простой способ сделать это, как это сделал один из авторов Джексона. В настоящее время нет способа перейти с JsonNode до String с отсортированными клавишами.

private static final ObjectMapper SORTED_MAPPER = new ObjectMapper();
static {
    SORTED_MAPPER.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
}

private String convertNode(final JsonNode node) throws JsonProcessingException {
    final Object obj = SORTED_MAPPER.treeToValue(node, Object.class);
    final String json = SORTED_MAPPER.writeValueAsString(obj);
    return json;
}