No momento eu tenho uma instância org.fasterxml.jackson.databind.ObjectMapper
e gostaria de obter uma String
com JSON bonito. Todos os resultados de minhas pesquisas no Google criaram maneiras Jackson 1.x de fazer isso e parece que não consigo encontrar a maneira correta e não obsoleta de fazer isso com o 2.2. Mesmo que eu não acredite que o código seja absolutamente necessário para esta pergunta, eis o que tenho agora:
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á resolvido, masSerializationConfig.Feature
não é. Este parece ser outro método de impressão bonita que também está obsoleto, a menos que esteja faltando alguma coisa. Há umaFeature
classe que é separada por si própria, mas não tem umaINDENT_OUTPUT
constante interna. :(De acordo com mkyong , o encantamento mágico é
defaultPrintingWriter
a impressão bonita JSON :Versões mais recentes:
Versões mais antigas:
Parece que eu pulei a arma um pouco rapidamente. Você pode tentar o gson , cujo construtor suporta a impressão bonita :
Espero que isto ajude...
fonte
defaultPrettyPrintingWriter()
não está mais disponível (mesmo como um método obsoleto) naObjectMapper
classe.ObjectMapper.writerWithDefaultPrettyPrinter()
A API jackson mudou:
fonte
new ObjectMapper().configure(SerializationFeature.INDENT_OUTPUT, true).writer().writeValueAsString(new HashMap<String, Object>());
. Você só precisa se certificar de usar o gravador que obtém do configuradoObjectMapper
.o IDENT_OUTPUT não fez nada por mim e, para dar uma resposta completa que funcione com meus frascos jackson 2.2.3:
fonte
Se você deseja ativar isso por padrão para TODAS as instâncias do ObjectMapper em um processo, aqui está um pequeno truque que definirá o valor padrão de INDENT_OUTPUT como true:
fonte
se você estiver usando a combinação primavera e jackson, poderá fazê-lo da seguinte maneira. Estou seguindo @gregwhitaker como sugerido, mas implementando no estilo primavera.
fonte
Se outras pessoas que visualizarem essa pergunta tiverem apenas uma string JSON (não em um objeto), você poderá colocá-la em
HashMap
e aindaObjectMapper
trabalhar. Aresult
variável é sua sequência JSON.fonte
Tente isso.
fonte