readtree org node new jsonnode example convert codehaus java sorting jackson

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