java - org - Jackson JsonNode para encadenar con claves ordenadas
org codehaus jackson jsonnode (1)
Estoy usando Jackson 2.2.3 y necesito convertir un árbol JsonNode en una cadena con claves de campo ordenadas. No tengo muy claro cómo hacerlo, especialmente porque lo contrario es muy simple: JsonNode jn = ObjectMapper.readTree(String s)
.
Parece que el método correcto es void writeTree(JsonGenerator jgen,JsonNode rootNode)
. Sin embargo, no veo forma de obtener la String
serializada de JsonGenerator
. Supongo que SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS
se seguirá aplicando, ya que JsonGenerator.Feature
s no tiene esa opción. ¿Hay alguna forma más sencilla de hacerlo? O, de no ser así, ¿cómo recupero la cadena serializada de JsonGenerator
?
Esta es la forma más fácil de hacerlo, según lo provisto por uno de los autores de Jackson. Actualmente no hay forma de ir directamente de JsonNode
a String
con las claves ordenadas.
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;
}