Java JsonGenerator – JSON-Verarbeitungs-API und Aktivieren der hübschen JSON-Ausgabe (Gson + Jackson)
Veröffentlicht: 2014-11-22
Das wird ein sehr interessantes Tutorial. Manchmal müssen Sie in Ihrer Enterprise-Java-Anwendung mit vielen JSON-Daten umgehen. Manchmal müssen Sie in eine Datei schreiben, aus einer Datei lesen, sie ordnungsgemäß in einem schönen hübschen Format protokollieren usw.
Haben Sie sich jemals Gedanken über Pretty-Print JSON in Java gemacht? In diesem Tutorial verwenden wir das javax.json
Paket und JsonGenerator
API, um JSONObject in eine Datei zu schreiben. Außerdem werden wir com.google.gson.Gson
verwenden, um die JSON-Ausgabe zu verschönern.
Dies sind die Schritte, die wir ausführen werden:
- Erstellen Sie die Klasse
CrunchifyJsonGeneratorPrettyJSON.java
- Verwenden Sie JsonGenerator, um JSONObject in Java zu erstellen, und speichern Sie es unter /Users/appshah/Desktop/crunchifyJson.txt
- Lesen Sie denselben JSON aus der Datei
- Drucken Sie das einfache JSON auf der Eclipse-Konsole
- Verwenden Sie das Dienstprogramm
crunchifyPrettyJSONUtility()
, um einfaches JSON in PrettyJSON zu konvertieren – Konvertieren Sie JSON-Strings in Pretty Print (Java, Gson) - Drucken Sie dasselbe PrettyJSON auf der Konsole
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
package crunchify . com . tutorials ; import java . io . FileNotFoundException ; import java . io . FileReader ; import java . io . FileWriter ; import java . io . IOException ; import javax . json . Json ; import javax . json . stream . JsonGenerator ; import org . json . simple . parser . JSONParser ; import org . json . simple . parser . ParseException ; import com . google . gson . Gson ; import com . google . gson . GsonBuilder ; import com . google . gson . JsonObject ; import com . google . gson . JsonParser ; /** * @author Crunchify.com * JsonGenerator and Pretty */ public class CrunchifyJsonGeneratorPrettyJSON { public static void main ( String [ ] args ) { FileWriter writer = null ; JSONParser parser = new JSONParser ( ) ; Object simpleObj = null ; try { writer = new FileWriter ( "/Users/appshah/Desktop/crunchifyJson.txt" ) ; // Modify path as per your need } catch ( IOException e ) { e . printStackTrace ( ) ; } // JsonGenerator to create JSONObject and store it to file location mentioned above JsonGenerator generator = Json . createGenerator ( writer ) ; generator . writeStartObject ( ) . writeStartArray ( "company" ) . writeStartObject ( ) . write ( "name" , "Crunchify" ) . write ( "managedBy" , "App Shah" ) . write ( "address" , "NYC, US" ) . writeStartObject ( "support" ) . write ( "type" , "wordpress" ) . write ( "status" , "active" ) . writeEnd ( ) . write ( "support_for" , "WordPress Plugins" ) . write ( "id" , "24534-4324-6f3453-4234-w234234" ) . write ( "team" , "3" ) . writeEnd ( ) . writeStartObject ( ) . write ( "name" , "Google" ) . write ( "managedBy" , "Larry Page,Sergey Brin" ) . write ( "address" , "Mountain View, US" ) . writeStartObject ( "support" ) . writeStartArray ( "products" ) . write ( "Gmail" ) . write ( "YouTube" ) . write ( "Drive" ) . write ( "+ Lot More" ) . writeEnd ( ) . write ( "status" , "active" ) . writeEnd ( ) . write ( "support_for" , "gmail, drive, YouTube and lot more" ) . write ( "id" , "3fwevwere-vwerfwevw-erw-vwe-efwfw" ) . write ( "team" , "46000" ) . writeEnd ( ) . writeEnd ( ) . writeEnd ( ) ; generator . close ( ) ; try { simpleObj = parser . parse ( new FileReader ( "/Users/appshah/Desktop/crunchifyJson.txt" ) ) ; } catch ( FileNotFoundException e ) { e . printStackTrace ( ) ; } catch ( IOException e ) { e . printStackTrace ( ) ; } catch ( ParseException e ) { e . printStackTrace ( ) ; } System . out . println ( "Simple JSON Result:\n" + simpleObj . toString ( ) ) ; String prettyJson = crunchifyPrettyJSONUtility ( simpleObj . toString ( ) ) ; System . out . println ( "\nPretty JSON Result:\n" + prettyJson ) ; } // Prettify JSON Utility public static String crunchifyPrettyJSONUtility ( String simpleJSON ) { JsonParser crunhifyParser = new JsonParser ( ) ; JsonObject json = crunhifyParser . parse ( simpleJSON ) . getAsJsonObject ( ) ; Gson prettyGson = new GsonBuilder ( ) . setPrettyPrinting ( ) . create ( ) ; String prettyJson = prettyGson . toJson ( json ) ; return prettyJson ; } } |
Die Schnittstelle JsonGenerator
schreibt JSON-Daten per Streaming in eine Ausgabequelle. Die Klasse Json enthält Methoden zum Erstellen von Generatoren für Zeichen- oder Ausgabeströme.

Gson
ist eine Java-Bibliothek, mit der Java-Objekte in ihre JSON-Darstellung konvertiert werden können. Es kann auch verwendet werden, um einen JSON-String in ein äquivalentes Java-Objekt zu konvertieren. Mit anderen Worten, es ist ein Java-API für JSON-Verarbeitungs-Tutorial, Java-API für JSON-Verarbeitungs-Maven, Java-API für JSON-Verarbeitungsbeispiel und so weiter.
Sie benötigen unten zwei Maven-Abhängigkeiten, damit es funktioniert.
1 2 3 4 5 |
< dependency > < groupId > org . glassfish < / groupId > < artifactId > javax . json < / artifactId > < version > 1.0.4 < / version > < / dependency > |
1 2 3 4 5 |
< dependency > < groupId > com . google . code . gson < / groupId > < artifactId > gson < / artifactId > < version > 2.3 < / version > < / dependency > |
Hier ist ein Ergebnis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Simple JSON Result : { "company" : [ { "id" : "24534-4324-6f3453-4234-w234234" , "support" : { "status" : "active" , "type" : "wordpress" } , "address" : "NYC, US" , "name" : "Crunchify" , "managedBy" : "App Shah" , "team" : "3" , "support_for" : "WordPress Plugins" } , { "id" : "3fwevwere-vwerfwevw-erw-vwe-efwfw" , "support" : { "status" : "active" , "products" : [ "Gmail" , "YouTube" , "Drive" , "+ Lot More" ] } , "address" : "Mountain View, US" , "name" : "Google" , "managedBy" : "Larry Page,Sergey Brin" , "team" : "46000" , "support_for" : "gmail, drive, YouTube and lot more" } ] } Pretty JSON Result : { "company" : [ { "id" : "24534-4324-6f3453-4234-w234234" , "support" : { "status" : "active" , "type" : "wordpress" } , "address" : "NYC, US" , "name" : "Crunchify" , "managedBy" : "App Shah" , "team" : "3" , "support_for" : "WordPress Plugins" } , { "id" : "3fwevwere-vwerfwevw-erw-vwe-efwfw" , "support" : { "status" : "active" , "products" : [ "Gmail" , "YouTube" , "Drive" , "+ Lot More" ] } , "address" : "Mountain View, US" , "name" : "Google" , "managedBy" : "Larry Page,Sergey Brin" , "team" : "46000" , "support_for" : "gmail, drive, YouTube and lot more" } ] } |