Java JsonGenerator — API обработки JSON и как включить вывод JSON Pretty Print (Gson + Jackson)
Опубликовано: 2014-11-22
Это будет очень интересный урок. Иногда в вашем корпоративном Java-приложении вам приходится иметь дело с большим количеством данных JSON. Иногда у вас есть запись в файл, чтение из файла, правильное ведение журнала в красивом формате и т. д.
Вы когда-нибудь задумывались о Pretty-Print JSON в Java? В этом руководстве мы будем использовать пакет javax.json
и API JsonGenerator
для записи 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 в их представление JSON. Его также можно использовать для преобразования строки JSON в эквивалентный объект Java. Другими словами, это java API для учебника по обработке json, java API для обработки json maven, java API для примера обработки json и так далее.
Вам нужно ниже двух зависимостей Maven, чтобы заставить его работать.
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" } ] } |