En este momento tengo una instancia de org.fasterxml.jackson.databind.ObjectMapper
y me gustaría obtener una String
con JSON bonita. Todos los resultados de mis búsquedas en Google han encontrado formas Jackson 1.x de hacer esto y parece que no puedo encontrar la forma adecuada y no desaprobada de hacerlo con 2.2. Aunque no creo que el código sea absolutamente necesario para esta pregunta, esto es lo que tengo ahora:
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
System.out.println("\n\n----------REQUEST-----------");
StringWriter sw = new StringWriter();
mapper.writeValue(sw, jsonObject);
// Want pretty version of sw.toString() here
SerializationConfig
está resuelto peroSerializationConfig.Feature
no lo está. Este parece ser otro método de impresión bonita que también está en desuso a menos que me falte algo. Hay unaFeature
clase que se separa por sí sola, pero que no tiene unaINDENT_OUTPUT
constante en su interior. :(De acuerdo con mkyong , el encantamiento mágico es
defaultPrintingWriter
a imprimir bastante JSON :Nuevas versiones:
Versiones mas antiguas:
Parece que salté el arma un poco rápidamente. Puede probar gson , cuyo constructor admite la impresión bonita :
Espero que esto ayude...
fuente
defaultPrettyPrintingWriter()
ya no está disponible (incluso como método obsoleto) en laObjectMapper
clase.ObjectMapper.writerWithDefaultPrettyPrinter()
La API de jackson ha cambiado:
fuente
new ObjectMapper().configure(SerializationFeature.INDENT_OUTPUT, true).writer().writeValueAsString(new HashMap<String, Object>());
. Solo tiene que asegurarse de usar el escritor que obtiene de la configuraciónObjectMapper
.IDENT_OUTPUT no hizo nada por mí, y para dar una respuesta completa que funcione con mis tarros jackson 2.2.3:
fuente
Si desea activar esto de forma predeterminada para TODAS las instancias de ObjectMapper en un proceso, aquí hay un pequeño truco que establecerá el valor predeterminado de INDENT_OUTPUT en verdadero:
fuente
si está utilizando la combinación de primavera y jackson, puede hacerlo de la siguiente manera. Estoy siguiendo @gregwhitaker como se sugiere, pero implementando en estilo de primavera.
fuente
Si otros que ven esta pregunta solo tienen una cadena JSON (no en un objeto), entonces puede ponerla en una
HashMap
y aún así hacerObjectMapper
que funcione. Laresult
variable es su cadena JSON.fuente
Prueba esto.
fuente