Gson - Gson
Эта статья не цитировать любой источники.Август 2020 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Разработчики) | |
---|---|
изначальный выпуск | 22 мая 2008 г. |
Стабильный выпуск | 2.8.6 / 4 октября 2019 |
Репозиторий | |
Написано в | Ява |
Операционная система | Кроссплатформенность |
Лицензия | Лицензия Apache 2.0 |
Интернет сайт | github |
Gson (также известный как Google Gson) - это Открытый исходный код Ява библиотека в сериализовать и десериализовать объекты Java в (и из) JSON.
История
Библиотека Gson изначально была разработана для внутренних целей Google, а версия 1.0 была выпущена 22 мая 2008 г. в соответствии с условиями Лицензия Apache 2.0. Последняя версия 2.8.6 была выпущена 4 октября 2019 года.
История версий
- 4 октября 2019 г .: версия 2.8.6
- 21 мая 2018 г .: версия 2.8.5
- 1 мая 2018 г .: версия 2.8.4
- 27 апреля 2018 г .: версия 2.8.3
- 19 сентября 2017 г .: версия 2.8.2
- 30 мая 2017 г .: версия 2.8.1
- 27 октября 2016 г .: версия 2.8.0
- 14 июня 2016 г .: версия 2.7
- 26 февраля 2016 г .: версия 2.6.2
- 11 февраля 2016 г .: версия 2.6.1
- 11 февраля 2016 г .: версия 2.6
- 24 ноября 2015 г .: версия 2.5
- 4 октября 2015 г .: версия 2.4
- 20 ноября 2014 г .: версия 2.3.1
- 11 августа 2014 г .: версия 2.3
- 13 мая 2013 г .: версия 2.2.4
- 12 апреля 2013 г .: версия 2.2.3
- 2 июля 2012 г .: версия 2.2.2
- 5 мая 2012 г .: версия 2.2.1
- 5 мая 2012 г .: версия 2.2
- 31 декабря 2011 г .: версия 2.1
- 13 ноября 2011 г .: версия 2.0
- 13 апреля 2011 г .: версия 1.7.1
- 12 апреля 2011 г .: версия 1.7
- 24 ноября 2010 г .: Версия 1.6
- 19 августа 2010 г .: версия 1.5
- 9 октября 2009 г .: версия 1.4
- 1 апреля 2009 г .: версия 1.3
- 12 января 2009 г .: версия 1.3, бета
- 29 августа 2008 г .: версия 1.2
- 18 июля 2008 г .: Версия 1.1.1
- 1 июля 2008 г .: версия 1.1
- 17 июня 2008 г .: версия 1.0.1
- 22 мая 2008 г .: версия 1.0
использование
Gson использует отражение, поэтому для его модификации не требуется сериализация или десериализация классов. По умолчанию ему просто нужно, чтобы класс определил конструктор no-args по умолчанию (который можно обойти, см. Функции ).
В следующем примере демонстрируется базовое использование Gson при сериализации образца объекта:
модуль GsonExample { требует Gson; требует Ява.sql; // Требуется gson экспорт Человек; экспорт Машина;}
упаковка Машина;общественный учебный класс Машина { общественный Нить производитель; общественный Нить модель; общественный двойной емкость; общественный логический авария; общественный Машина() { } общественный Машина(Нить производитель, Нить модель, двойной емкость, логический авария) { это.производитель = производитель; это.модель = модель; это.емкость = емкость; это.авария = авария; } @Override общественный Нить нанизывать() { возвращаться ("Производитель:" + производитель + ", " + "Модель:" + модель + ", " + "Емкость: " + емкость + ", " + "Авария: " + авария); }}
упаковка Человек;импорт Автомобиль.;общественный учебный класс Человек { общественный Нить имя; общественный Нить фамилия; общественный Машина[] легковые автомобили; общественный int Телефон; общественный преходящий int возраст; общественный Человек() { } общественный Человек(Нить имя, Нить фамилия, int Телефон, int возраст, Машина[] легковые автомобили) { это.имя = имя; это.фамилия = фамилия; это.легковые автомобили = легковые автомобили; это.Телефон = Телефон; это.возраст = возраст; } @Override общественный Нить нанизывать() { StringBuilder сб = новый StringBuilder(); сб.добавить("Имя: ").добавить(имя).добавить(" ").добавить(фамилия).добавить(" п"); сб.добавить("Телефон: ").добавить(Телефон).добавить(" п"); сб.добавить("Возраст: ").добавить(возраст).добавить(" п"); int я = 0; за (Машина элемент : легковые автомобили) { я++; сб.добавить("Машина ").добавить(я).добавить(": ").добавить(элемент).добавить(" п"); } возвращаться сб.нанизывать(); }}
После звонка
упаковка Главный;импорт Автомобиль.;импорт Человек.;импорт com.google.gson.Gson;общественный учебный класс Главный { общественный статический пустота главный(Нить[] аргументы) { Gson Gson = новый Gson(); Машина audi = новый Машина(«Ауди», «А4», 1.8, ложный); Машина Skoda = новый Машина(«Шкода», «Октавия», 2.0, истинный); Машина[] легковые автомобили = {audi, Skoda}; Человек Джон Доу = новый Человек("Джон", "Лань", 2025550191, 35, легковые автомобили); Система.из.println(Gson.toJson(Джон Доу)); }}
вы получите такой результат:
{ "имя":"Джон", "фамилия":"Лань", "легковые автомобили":[ { "производитель":«Ауди», "модель":«А4», "емкость":1.8, "авария":ложный }, { "производитель":«Шкода», "модель":«Октавия», "емкость":2.0, "авария":истинный } ], "Телефон":2025550191}
Поскольку поле "age" в поле Person помечено как временное, оно не включается в вывод.
Чтобы десериализовать вывод, полученный в последнем примере, вы можете выполнить следующий код:
упаковка Главный;импорт Человек.;импорт com.google.gson.Gson;общественный учебный класс Главный { общественный статический пустота главный(Нить[] аргументы) { Gson Gson = новый Gson(); Нить json = "{" имя ": " Джон ", " фамилия ": " Лань ", " автомобили ": [{" производитель ": " Ауди ", " модель ": " A4 "," + "" вместимость ": 1.8, " авария ": false}, {" производитель ": " Škoda ", " модель ": " Octavia ", " вместимость "» + ": 2.0, " авария ": true}], " phone ": 2025550191}"; Человек Джон Доу = Gson.fromJson(json, Человек.учебный класс); Система.из.println(Джон Доу.нанизывать()); }}
И будет сгенерирован следующий вывод:
Имя: Джон Доу Телефон: 2025550191 Возраст: 0 Автомобиль 1: Производитель: Audi, Модель: A4, Вместимость: 1,8, ДТП: ложь Автомобиль 2: Производитель: Škoda, Модель: Octavia, Вместимость: 2,0, ДТП: верно
В следующем примере показано, как красиво распечатать Json с помощью библиотеки Gson.
импорт 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(«Фиат»,"BMW","Ламборджини"); // Создаем новый объект GSON Gson Gson = новый GsonBuilder().setPrettyPrinting().Создайте(); Нить prettyJson=Gson.toJson(легковые автомобили); Система.из.println("симпатичный "+prettyJson); }}
И будет сгенерирован следующий вывод:
довольно [«Фиат», «БМВ», «Ламборджини»]
Функции
- Gson может обрабатывать коллекции, общие типы и вложенные классы (включая внутренние классы, однако по умолчанию это невозможно)
- При десериализации Gson перемещается по дереву типов десериализуемого объекта. Это приводит к игнорированию дополнительных полей, присутствующих во входных данных JSON.
- Пользователь может написать собственный сериализатор и / или десериализатор, чтобы они могли контролировать весь процесс и даже (де) сериализовать экземпляры классов, для которых исходный код недоступен.
- Пользователь может написать InstanceCreator, который позволяет им десериализовать экземпляры классов без определенного конструктора без аргументов.
- Gson обладает широкими возможностями настройки, вы можете указать:
- Компактная / красивая печать (хотите ли вы компактный или читаемый вывод)
- Как обрабатывать поля нулевого объекта - по умолчанию их нет в выводе
- Правила того, какие поля должны быть исключены из (де) сериализации
- Как преобразовать имена полей Java