Гсон - Gson

Google Gson
ӘзірлеушілерGoogle
Бастапқы шығарылым22 мамыр, 2008; 12 жыл бұрын (2008-05-22)
Тұрақты шығарылым
2.8.6 / 4 қазан 2019 ж; 13 ай бұрын (2019-10-04)
Репозиторий Мұны Wikidata-да өзгертіңіз
ЖазылғанJava
Операциялық жүйеКросс-платформа
ЛицензияApache лицензиясы 2.0
Веб-сайтgithub.com/ google/ gson

Гсон (Google Gson деп те аталады) - бұл ашық көзі Java кітапхана сериялау және Java нысандарын сериясыздандыру (және) JSON.

Тарих

Gson кітапханасы бастапқыда Google-дің ішкі мақсаттары үшін жасалды, ал 1.0 нұсқасы кейінірек 2008 жылы 22 мамырда шығарылды. Apache лицензиясы 2.0. Соңғы нұсқасы, 2.8.6, 2019 жылдың 4 қазанында шыққан.

Нұсқа тарихы

  • 04 қазан 2019: 2.8.6 нұсқасы
  • 21 мамыр 2018 жыл: 2.8.5 нұсқасы
  • 2018 жылғы 1 мамыр: 2.8.4 нұсқасы
  • 2018 жылғы 27 сәуір: 2.8.3 нұсқасы
  • 2017 жылғы 19 қыркүйек: 2.8.2 нұсқасы
  • 2017 жылғы 30 мамыр: 2.8.1 нұсқасы
  • 2016 жылғы 27 қазан: 2.8.0 нұсқасы
  • 2016 жылғы 14 маусым: 2.7 нұсқасы
  • 2016 жылғы 26 ақпан: 2.6.2 нұсқасы
  • 2016 жылғы 11 ақпан: 2.6.1 нұсқасы
  • 2016 жылғы 11 ақпан: 2.6 нұсқасы
  • 2015 жылғы 24 қараша: 2.5 нұсқасы
  • 4 қазан 2015 жыл: 2.4 нұсқасы
  • 2014 жылғы 20 қараша: 2.3.1 нұсқасы
  • 11 тамыз 2014 жыл: 2.3 нұсқасы
  • 2013 жылғы 13 мамыр: 2.2.4 нұсқасы
  • 2013 жылғы 12 сәуір: 2.2.3 нұсқасы
  • 2012 жылғы 2 шілде: 2.2.2 нұсқасы
  • 2012 жылғы 5 мамыр: 2.2.1 нұсқасы
  • 2012 жылғы 5 мамыр: 2.2 нұсқасы
  • 2011 жылғы 31 желтоқсан: 2.1 нұсқасы
  • 2011 жылғы 13 қараша: 2.0 нұсқасы
  • 2011 жылғы 13 сәуір: 1.7.1 нұсқасы
  • 2011 жылғы 12 сәуір: 1.7 нұсқасы
  • 24 қараша 2010 жыл: 1.6 нұсқа
  • 19 тамыз, 2010 жыл: 1.5 нұсқа
  • 2009 жылғы 9 қазан: 1.4 нұсқасы
  • 2009 жылғы 1 сәуір: 1.3 нұсқасы
  • 2009 жылғы 12 қаңтар: 1.3 нұсқасының бета нұсқасы
  • 29 тамыз 2008 ж.: 1.2 нұсқа
  • 2008 жылғы 18 шілде: 1.1.1 нұсқасы
  • 2008 жылғы 1 шілде: 1.1 нұсқасы
  • 2008 жылғы 17 маусым: 1.0.1 нұсқасы
  • 2008 жылғы 22 мамыр: 1.0 нұсқасы

Пайдалану

Gson пайдаланады шағылысу, сондықтан сыныптардың өзгертілуі немесе сериясыздандырылуы қажет емес. Әдепкі бойынша, ол тек сыныпқа әдепкі no-args конструкторын анықтауы керек (оны айналасында жұмыс істеуге болады, қараңыз) Ерекшеліктер ).

Келесі мысал үлгі нысанын сериялау кезінде Gson-дың ең қарапайым қолданылуын көрсетеді:

модуль GsonErmal {    талап етеді gson;    талап етеді java.кв; // gson талап етеді    экспорт Адам;    экспорт Автокөлік;}
пакет Автокөлік;қоғамдық сынып Автокөлік {    қоғамдық Жол өндіруші;    қоғамдық Жол модель;    қоғамдық екі есе сыйымдылығы;    қоғамдық логикалық апат;    қоғамдық Автокөлік() {    }    қоғамдық Автокөлік(Жол өндіруші, Жол модель, екі есе сыйымдылығы, логикалық апат) {        бұл.өндіруші = өндіруші;        бұл.модель = модель;        бұл.сыйымдылығы = сыйымдылығы;        бұл.апат = апат;    }    @Override    қоғамдық Жол toString() {        қайту («Өндіруші:» + өндіруші + ", " + «Үлгі:» + модель + ", " + «Сыйымдылық:» + сыйымдылығы + ", " + «Апат:» + апат);    }}
пакет Адам;импорт Автокөлік;қоғамдық сынып Адам {    қоғамдық Жол аты;    қоғамдық Жол тегі;    қоғамдық Автокөлік[] Көліктер;    қоғамдық int телефон;    қоғамдық өтпелі int жас;    қоғамдық Адам() {    }    қоғамдық Адам(Жол аты, Жол тегі, int телефон, int жас, Автокөлік[] Көліктер) {        бұл.аты = аты;        бұл.тегі = тегі;        бұл.Көліктер = Көліктер;        бұл.телефон = телефон;        бұл.жас = жас;    }    @Override    қоғамдық Жол toString() {        StringBuilder сб = жаңа StringBuilder();        сб.қосу(«Аты:»).қосу(аты).қосу(" ").қосу(тегі).қосу(« n»);        сб.қосу(«Телефон:»).қосу(телефон).қосу(« n»);        сб.қосу(«Жасы:»).қосу(жас).қосу(« n»);        int мен = 0;        үшін (Автокөлік элемент : Көліктер) {            мен++;            сб.қосу(«Автокөлік»).қосу(мен).қосу(": ").қосу(элемент).қосу(« n»);        }        қайту сб.toString();    }}

Қоңырау шалғаннан кейін

пакет Негізгі;импорт Автокөлік;импорт Тұлға;импорт com.google.gson.Gson;қоғамдық сынып Негізгі {    қоғамдық статикалық жарамсыз негізгі(Жол[] доға) {        Гсон gson = жаңа Гсон();        Автокөлік ауди = жаңа Автокөлік(«Ауди», «A4», 1.8, жалған);        Автокөлік скода = жаңа Автокөлік(«Škoda», «Octavia», 2.0, шын);        Автокөлік[] Көліктер = {ауди, скода};        Адам JohnDoe = жаңа Адам(«Джон», «Көке», 2025550191, 35, Көліктер);        Жүйе.шығу.println(gson.Джонсон(JohnDoe));    }}

сіз бұл өнімді аласыз:

{   «аты»:«Джон»,   «тегі»:«Көке»,   «Көліктер»:[      {         «өндіруші»:«Ауди»,         «модель»:«A4»,         «сыйымдылық»:1.8,         «апат»:жалған      },      {         «өндіруші»:«Škoda»,         «модель»:«Octavia»,         «сыйымдылық»:2.0,         «апат»:шын      }   ],   «телефон»:2025550191}

Тұлғаның өрісі «жас» өтпелі деп белгіленгендіктен, ол нәтижеге кірмейді.

Соңғы мысал бойынша шығарылған өнімді сериясыздандыру үшін келесі кодты орындауға болады:

пакет Негізгі;импорт Тұлға;импорт com.google.gson.Gson;қоғамдық сынып Негізгі {    қоғамдық статикалық жарамсыз негізгі(Жол[] доға) {        Гсон gson = жаңа Гсон();        Жол джсон = «» «: » A4  «,» +                «» сыйымдылығы  «: 1.8, » авария  «: жалған}, {» өндіруші  «: » Škoda  «, » модель  «: » Octavia  «, » сыйымдылығы  «» +                «: 2.0, » accident  «: true}], » phone  «: 2025550191}»;        Адам JohnDoe = gson.Джондан(джсон, Адам.сынып);        Жүйе.шығу.println(JohnDoe.toString());    }}

Келесі нәтиже шығарылады:

Атауы: Джон До Телефон: 2025550191 жас: 0Автокөлік 1: өндіруші: Audi, модель: A4, сыйымдылық: 1.8, апат: жалған көлік 2: өндіруші: Škoda, модель: Octavia, сыйымдылық: 2.0, авария: шын

Келесі мысал Gson кітапханасын пайдаланып Json-ді қалай әдемі басып шығаруға болатынын көрсетеді.

импорт com.google.gson.Gson;импорт com.google.gson.GsonBuilder;импорт java.nio.file.Files;импорт java.nio.file.Paths;импорт java.util.Arrays;импорт java.util.List;импорт ломбок;қоғамдық сынып PrettyPrintExample {  // SneakyThrows аннотациясы барлық тексерілген ерекшеліктерді жариялайды.  @SneakyThrows  қоғамдық статикалық жарамсыз негізгі(Жол[] доға) {    Тізім<Жол> Көліктер= Массивтер.asList(«Fiat»,«БМВ»,«Lamborghini»);    // Жаңа GSON нысанын жасаңыз    Гсон gson = жаңа GsonBuilder().setPrettyPrinting().жасау();    Жол әдемі Джонсон=gson.Джонсон(Көліктер);    Жүйе.шығу.println(«әдемі»+әдемі Джонсон);  }}

Келесі нәтиже шығарылады:

әдемі [«Fiat», «BMW», «Lamborghini»)

Ерекшеліктер

  • Gson коллекцияларды, жалпы типтерді және кірістірілген сыныптарды басқара алады (ішкі сыныптарды қоса, оны әдепкі бойынша орындау мүмкін емес)
  • Дезериализация кезінде Гсон десериализацияланатын объектінің типтік ағашында жүреді. Бұл JSON енгізуінде қосымша өрістерді елемеуге әкеледі.
  • Пайдаланушы бүкіл процесті басқара алатын және тіпті бастапқы кодқа қол жетімді емес кластардың даналарын сериялдайтын етіп реттелетін сериализаторды және / немесе десериализаторды жаза алады.
  • Пайдаланушы InstanceCreator-ді жаза алады, бұл оларға класстардың мысалдарын анықтауға мүмкіндік береді, олар ешқандай аргументсіз конструкторсыз.
  • Gson өте теңшелген, сіз мынаны көрсете аласыз:
  • Шағын / әдемі басып шығару (ықшам немесе оқылымды шығарғыңыз келсе де)
  • Нөлдік объект өрістерін қалай өңдеу керек - әдепкі бойынша олар нәтижеде жоқ
  • Қандай өрістерді сериялаудан шығаруға арналған ережелер
  • Java өрісінің аттарын қалай түрлендіруге болады

Сыртқы сілтемелер