Jump to content

Гсон

Гугл Гсон
Разработчик(и) Google
Первоначальный выпуск 22 мая 2008 г .; 16 лет назад ( 22 мая 2008 г. )
Стабильная версия
2.10.1 [1]  Отредактируйте это в Викиданных / 6 января 2023 г .; 17 месяцев назад ( 6 января 2023 )
Репозиторий
Написано в Ява
Операционная система Кросс-платформенный
Лицензия Лицензия Апач 2.0
Веб-сайт github /Google /гсон

Gson или Google Gson — это с открытым исходным кодом библиотека Java , которая сериализует объекты Java в JSON (и десериализует их обратно в Java).

История [ править ]

Библиотека Gson изначально была разработана для внутренних целей Google, а версия 1.0 была выпущена 22 мая 2008 г. в соответствии с условиями лицензии Apache 2.0. Последняя версия 2.10.1 была выпущена 6 января 2023 г.

Использование [ править ]

Gson использует отражение, а это означает, что классы не нужно модифицировать для сериализации или десериализации. По умолчанию классу нужен только определенный конструктор по умолчанию (без аргументов); однако это требование можно обойти (см. Возможности ).

В следующем примере показано базовое использование Gson при сериализации образца объекта:

package example;

public class Car {
    public String manufacturer;
    public String model;
    public double capacity;
    public boolean accident;

    public Car() {
    }

    public Car(String manufacturer, String model, double capacity, boolean accident) {
        this.manufacturer = manufacturer;
        this.model = model;
        this.capacity = capacity;
        this.accident = accident;
    }

    @Override
    public String toString() {
        return ("Manufacturer: " + manufacturer + ", " + "Model: " + model + ", " + "Capacity: " + capacity + ", " + "Accident: " + accident);
    }
}
package example;

public class Person {
    public String name;
    public String surname;
    public Car[] cars;
    public int phone;
    public transient int age;

    public Person() {
    }

    public Person(String name, String surname, int phone, int age, Car[] cars) {
        this.name = name;
        this.surname = surname;
        this.cars = cars;
        this.phone = phone;
        this.age = age;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("Name: ").append(name).append(" ").append(surname).append("\n");
        sb.append("Phone: ").append(phone).append("\n");
        sb.append("Age: ").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();
    }
}
package main;

import example.Car;
import example.Person;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Main {
    public static void main(String[] args) {
        // Enable pretty printing for demonstration purposes
        // Can also directly create instance with `new Gson()`; this will produce compact 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));
    }
}

Вызов кода вышеуказанного основного класса приведет к следующему выводу JSON:

{
  "name": "John",
  "surname": "Doe",
  "cars": [
    {
      "manufacturer": "Audi",
      "model": "A4",
      "capacity": 1.8,
      "accident": false
    },
    {
      "manufacturer": "Škoda",
      "model": "Octavia",
      "capacity": 2.0,
      "accident": true
    }
  ],
  "phone": 2025550191
}

Диаграмма с данными из JSON.

поля Person Поскольку возраст помечен как временный , он не включается в выходные данные.

package main;

import example.Person;
import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        Gson gson = new Gson();
        String json = "{\"name\":\"John\",\"surname\":\"Doe\",\"cars\":[{\"manufacturer\":\"Audi\",\"model\":\"A4\"," +
                "\"capacity\":1.8,\"accident\":false},{\"manufacturer\":\"Škoda\",\"model\":\"Octavia\",\"capacity\"" +
                ":2.0,\"accident\":true}],\"phone\":2025550191}";
        Person johnDoe = gson.fromJson(json, Person.class);
        System.out.println(johnDoe.toString());
    }
}

Чтобы десериализовать выходные данные, полученные в последнем примере, вы можете выполнить приведенный выше код, который генерирует следующий вывод:

Name: John Doe
Phone: 2025550191
Age: 0
Car 1: Manufacturer: Audi, Model: A4, Capacity: 1.8, Accident: false
Car 2: Manufacturer: Škoda, Model: Octavia, Capacity: 2.0, Accident: true

Это показывает, как Gson можно использовать с системой модулей платформы Java для приведенного выше примера:

module GsonExample {
    requires com.google.gson;
    // Open package declared in the example above to allow Gson to use reflection on classes
    // inside the package (and also access non-public fields)
    opens example to com.google.gson;
}

Более подробные примеры можно найти в руководстве по использованию Gson в их репозитории GitHub .

Особенности [ править ]

  • Gson может обрабатывать коллекции , универсальные типы и вложенные классы (включая внутренние классы , что невозможно по умолчанию).
  • При десериализации Gson перемещается по дереву типов десериализуемого объекта, что означает, что он игнорирует дополнительные поля, присутствующие во входных данных JSON.
  • Пользователь может:
    • напишите собственный сериализатор и/или десериализатор, чтобы они могли контролировать весь процесс и даже десериализовать экземпляры классов, исходный код которых недоступен.
    • напишите InstanceCreator, который позволит им десериализовать экземпляры классов без определенного конструктора без аргументов.
  • Gson обладает широкими возможностями настройки, поскольку вы можете указать:
  • Компактная/красивая печать (независимо от того, хотите ли вы компактный или читаемый результат)
  • Как обрабатывать пустые поля объекта — по умолчанию они отсутствуют в выводе
  • Исключение полей — правила того, какие поля следует исключить из десериализации.
  • Как преобразовать имена полей Java

Ссылки [ править ]

  1. ^ «Выпуск 2.10.1» . 6 января 2023 г. Проверено 12 января 2023 г.

[1]

[2]

Внешние ссылки [ править ]

Дальнейшее чтение [ править ]

  1. Дополнительная информация о пакете com.google.gson (из javadoc.io )
  2. Дополнительная информация о классе Gson (из javadoc.io )
  1. ^ Женков, Якоб. «ГСОН – Гсон» . http://www.jenkov.com . Проверено 28 декабря 2023 г.
  2. ^ Gson , Google, 28 декабря 2023 г. , получено 28 декабря 2023 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 395dce3699081c97c66641019a01ae1c__1715064420
URL1:https://arc.ask3.ru/arc/aa/39/1c/395dce3699081c97c66641019a01ae1c.html
Заголовок, (Title) документа по адресу, URL1:
Gson - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)