Comment puis-je imprimer des données JSON existantes avec Java?

J’ai une chaîne JSON compacte et je veux la formater en Java sans avoir à la désérialiser – par exemple, tout comme jsonlint.org le fait. Y a-t-il des bibliothèques qui fournissent cela?

Une solution similaire pour XML serait également intéressante.

Je pense que pour imprimer quelque chose, il est très utile de connaître sa structure.

Pour obtenir la structure, vous devez l’ parsingr . Pour cette raison, je ne pense pas que ce soit beaucoup plus facile que d’parsingr au préalable la chaîne JSON que vous avez, puis d’utiliser la méthode d’impression jolie toSsortingng mentionnée dans les commentaires ci-dessus.

Bien sûr, vous pouvez faire la même chose avec n’importe quelle bibliothèque JSON que vous aimez.

 int spacesToIndentEachLevel = 2; new JSONObject(jsonSsortingng).toSsortingng(spacesToIndentEachLevel); 

Utiliser org.json.JSONObject (intégré à JavaEE et Android)

En une seule ligne:

 Ssortingng niceFormattedJson = JsonWriter.formatJson(jsonSsortingng) 

ou

 System.out.println(JsonWriter.formatJson(jsonSsortingng.toSsortingng())); 

Json-io libray ( https://github.com/jdereg/json-io ) est une petite bibliothèque (75 Ko) sans autres dépendances que le JDK.

En plus de l’impression JSON, vous pouvez sérialiser des objects Java (des graphes d’object Java complets avec des cycles) en JSON, ainsi que les lire.

Si vous utilisez jackson, vous pouvez facilement y parvenir en configurant une fonctionnalité SerializationFeature dans votre ObjectMapper :

 com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper(); mapper.configure(SerializationFeature.INDENT_OUTPUT, true); mapper.writeValueAsSsortingng(); 

C’est tout.

Utilisez gson. https://www.mkyong.com/java/how-to-enable-pretty-print-json-output-gson/

 Gson gson = new GsonBuilder().setPrettyPrinting().create(); Ssortingng json = gson.toJson(my_bean); 

sortie

 { "name": "mkyong", "age": 35, "position": "Founder", "salary": 10000, "skills": [ "java", "python", "shell" ] } 

Je fais une solution très simple:

  com.cedarsoftware json-io 4.5.0  

Code Java:

 import com.cedarsoftware.util.io.JsonWriter; //... Ssortingng jsonSsortingng = "json_ssortingng_plain_text"; System.out.println(JsonWriter.formatJson(jsonSsortingng)); 

Une autre façon d’utiliser gson:

 Ssortingng json_Ssortingng_to_print = ... Gson gson = new GsonBuilder().setPrettyPrinting().create(); JsonParser jp = new JsonParser(); return gson.toJson(jp.parse(json_Ssortingng_to_print)); 

Il peut être utilisé lorsque vous n’avez pas le haricot comme dans l’article de susemi99.