В этой статье есть несколько проблем. Помогите улучшить ее или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти сообщения )
|
Разработчик(и) | |
---|---|
Первоначальный выпуск | 22 мая 2008 г. ( 2008-05-22 ) |
Стабильный релиз | 2.11.0 [1] / 20 мая 2024 г. ( 20 мая 2024 ) |
Репозиторий |
|
Написано в | Ява |
Операционная система | Кроссплатформенный |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | github.com/google/gson |
Gson , или Google Gson, — это библиотека Java с открытым исходным кодом , которая сериализует объекты Java в JSON (и десериализует их обратно в Java).
Библиотека Gson изначально была разработана для внутренних целей в Google, версия 1.0 была выпущена 22 мая 2008 года в соответствии с условиями лицензии Apache License 2.0. Последняя версия, 2.11, была выпущена 20 мая 2024 года.
Gson использует рефлексию, что означает, что классы не нужно изменять для сериализации или десериализации. По умолчанию классу нужен только определенный конструктор по умолчанию (без аргументов); однако это требование можно обойти (см. Особенности).
Следующий пример демонстрирует базовое использование Gson при сериализации образца объекта:
пример пакета ; public class Car { public String manufacturer ; public String model ; public double capacity ; public boolean accident ; общественный автомобиль () { } общественный автомобиль ( производитель строки , модель строки , двойная вместимость , логическое значение аварии ) { этот.производитель = производитель ; эта.модель = модель ; эта.емкость = вместимость ; эта.авария = авария ; } @Override public String toString () { return ( "Производитель: " + производитель + ", " + "Модель: " + модель + ", " + "Мощность: " + мощность + ", " + "Авария: " + авария ); } }
пример пакета ; public class Person { public String name ; public String signature ; public Car [] cars ; public int phone ; public transient int age ; публичная персона () { } public Person ( String name , String favorite , int phone , int age , Car [ ] cars ) { this.name = name ; this.family = nickname ; this.cars = cars ; this.phone = phone ; this.age = age ; } @Override public String toString () { StringBuilder sb = new StringBuilder (); sb.append ( " Имя: " ) .append ( name ) .append ( " " ) .append ( family ) .append ( " \n" ); sb.append ( " Телефон: " ) .append ( phone ) .append ( " \n" ); sb.append ( " Возраст: " ) .append ( age ) .append ( "\n" ); int i = 0 ; for ( Car car : cars ) { i ++ ; sb.append ( "Car " ) .append ( i ) .append ( " : " ) .append ( car ) .append ( " \ n " ) ; } return sb.toString (); } }
основной пакет ; импорт пример.Автомобиль ; импорт пример.Человек ; импорт com.google.gson.Gson ; импорт com.google.gson.GsonBuilder ; public class Main { public static void main ( String [] args ) { // Включить красивую печать для демонстрационных целей // Также можно напрямую создать экземпляр с помощью `new Gson()`; это создаст компактный JSON Gson gson = new GsonBuilder (). setPrettyPrinting (). create (); Car audi = new Car ( "Audi" , "A4" , 1.8 , false ); Car skoda = new Car ( "Škoda" , "Octavia" , 2.0 , true ); Car [] cars = { audi , skoda }; Person johnDoe = new Person ( "John" , "Doe" , 2025550191 , 35 , cars ); System . out . println ( gson . toJson ( johnDoe )); } }
Вызов кода указанного выше класса Main приведет к следующему выводу JSON:
{ "имя" : "Джон" , "фамилия" : "Доу" , "автомобили" : [ { "производитель" : "Audi" , "модель" : "A4" , "емкость" : 1.8 , "авария" : false }, { "производитель" : "Škoda" , "модель" : "Octavia" , "емкость" : 2.0 , "авария" : true } ], "телефон" : 2025550191 }
Поскольку поле возраста Person помечено как временное , оно не включается в вывод.
основной пакет ; импортировать пример.Персона ; импортировать com.google.gson.Gson ; public class Main { public static void main ( String [] args ) { Gson gson = new Gson (); String json = "{\"имя\":\"Джон\",\"фамилия\":\"Доу\",\"автомобили\":[{\"производитель\":\"Audi\",\"модель\":\"A4\"," + "\"емкость\":1.8,\"авария\":false},{\"производитель\":\"Škoda\",\"модель\":\"Octavia\",\"емкость\"" + ":2.0,\"авария\":true}],\"телефон\":2025550191}" ; Person johnDoe = gson . fromJson ( json , Person . class ); System . out . println ( johnDoe . toString ()); } }
Чтобы десериализовать вывод, полученный в последнем примере, вы можете выполнить приведенный выше код, который сгенерирует следующий вывод:
Имя: Джон Доу Телефон: 2025550191 Возраст: 0 Автомобиль 1: Производитель: Audi, Модель: A4, Вместимость: 1.8, Авария: ложная Автомобиль 2: Производитель: Škoda, Модель: Octavia, Вместимость: 2.0, Авария: настоящая
Это показывает, как Gson можно использовать с системой модулей платформы Java для приведенного выше примера:
module GsonExample { require com . google . gson ; // Открыть пакет, объявленный в примере выше, чтобы позволить Gson использовать рефлексию для классов // внутри пакета (а также получить доступ к закрытым полям) открывает пример для com . google . gson ; }
Более подробные примеры см. в руководстве по использованию Gson в их репозитории GitHub.
[1]
[2]