Java JsonGenerator – JSON Processing API และวิธีเปิดใช้งาน Pretty Print JSON Output (Gson + Jackson)
เผยแพร่แล้ว: 2014-11-22
นี่จะเป็นกวดวิชาที่น่าสนใจมาก บางครั้งใน Enterprise Java Application ของคุณ คุณต้องจัดการกับข้อมูล JSON จำนวนมาก บางครั้งคุณมี Write to file, Read from file, บันทึกอย่างถูกต้องใน Pretty Format เป็นต้น
คุณเคยสงสัยเกี่ยวกับ Pretty-Print JSON ใน Java หรือไม่? ในบทช่วยสอนนี้ เราจะใช้แพ็คเกจ javax.json
และ JsonGenerator
API เพื่อเขียน JSONObject ลงในไฟล์ นอกจากนี้ เราจะใช้ com.google.gson.Gson
เพื่อปรับแต่งเอาต์พุต JSON
นี่คือขั้นตอนที่เราจะดำเนินการ:
- สร้างคลาส
CrunchifyJsonGeneratorPrettyJSON.java
- ใช้ JsonGenerator เพื่อสร้าง JSONObject ใน Java และเก็บไว้ที่ตำแหน่ง /Users/appshah/Desktop/crunchifyJson.txt
- อ่าน JSON เดียวกันจากไฟล์
- พิมพ์ JSON อย่างง่ายบนคอนโซล Eclipse
- ใช้ยูทิลิตี้
crunchifyPrettyJSONUtility()
เพื่อแปลง JSON อย่างง่ายเป็น PrettyJSON – แปลงสตริง JSON เป็น Pretty Print (Java, Gson) - พิมพ์ PrettyJSON เดียวกันบนคอนโซล
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 ; } } |
ส่วนต่อ JsonGenerator
เขียนข้อมูล JSON ไปยังแหล่งเอาต์พุตในลักษณะสตรีมมิ่ง คลาส Json มีเมธอดในการสร้างตัวสร้างสำหรับอักขระหรือเอาต์พุตสตรีม

Gson
เป็นไลบรารี Java ที่สามารถใช้เพื่อแปลง Java Objects เป็นการแสดง JSON นอกจากนี้ยังสามารถใช้เพื่อแปลงสตริง JSON เป็นวัตถุ Java ที่เทียบเท่าได้ กล่าวอีกนัยหนึ่งคือ java api สำหรับการสอนการประมวลผล json, java api สำหรับการประมวลผล json maven, java api สำหรับตัวอย่างการประมวลผล json เป็นต้น
คุณต้องมี Maven Dependencies ต่ำกว่าสองรายการจึงจะใช้งานได้
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 > |
นี่คือผลลัพธ์:
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" } ] } |