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