En ce moment, j'ai une instance de org.fasterxml.jackson.databind.ObjectMapper
et je voudrais obtenir un String
joli JSON. Tous les résultats de mes recherches sur Google ont abouti à des moyens Jackson 1.x de le faire et je n'arrive pas à trouver le moyen approprié et non obsolète de le faire avec la version 2.2. Même si je ne pense pas que ce code soit absolument nécessaire pour cette question, voici ce que j'ai en ce moment:
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
soit résolu, mais ceSerializationConfig.Feature
n'est pas le cas. Cela semble être une autre méthode d'impression jolie qui est également déconseillée, sauf si je manque quelque chose. Il y a uneFeature
classe qui est séparée d'elle-même, mais qui n'a pas deINDENT_OUTPUT
constante à l'intérieur. :(Selon mkyong , l'incantation magique est
defaultPrintingWriter
d' imprimer JSON :Versions plus récentes:
Versions plus anciennes:
Il semble que j'ai sauté le pistolet un peu rapidement. Vous pouvez essayer gson , dont le constructeur prend en charge la jolie impression :
J'espère que cela t'aides...
la source
defaultPrettyPrintingWriter()
n'est plus disponible (même en tant que méthode obsolète) sur laObjectMapper
classe.ObjectMapper.writerWithDefaultPrettyPrinter()
L'API jackson a changé:
la source
new ObjectMapper().configure(SerializationFeature.INDENT_OUTPUT, true).writer().writeValueAsString(new HashMap<String, Object>());
. Vous devez simplement vous assurer d'utiliser le graveur que vous obtenez à partir du fichier configuréObjectMapper
.l'IDENT_OUTPUT n'a rien fait pour moi, et pour donner une réponse complète qui fonctionne avec mes jars jackson 2.2.3:
la source
Si vous souhaitez l'activer par défaut pour TOUTES les instances ObjectMapper d'un processus, voici un petit hack qui définira la valeur par défaut de INDENT_OUTPUT sur true:
la source
si vous utilisez une combinaison ressort et jackson, vous pouvez le faire comme suit. Je suis @gregwhitaker comme suggéré, mais je l'implémente au printemps.
la source
Si d'autres personnes qui consultent cette question n'ont qu'une chaîne JSON (pas dans un objet), vous pouvez la mettre dans un
HashMap
et toujours faireObjectMapper
fonctionner le. Laresult
variable est votre chaîne JSON.la source
Essaye ça.
la source