Библиотека GSON.

JSON(Java Script Object Notation) – это формат обмена данными по сети, основанный на JavaScript(что следует из названия). Формат JSON очень прост и может легко использоваться при сетевом взаимодействии.

О формате JSON можно ознакомиться на сайте http://www.json.org/ .

По сути это набор пар “ключ-значение”, объединенных в последовательность значений(массив).

Формат JSON удобочитаем и понятен для человека, как и большинство строковых форматов. Допустим мы производим выборку информацию о заказчике из БД и возвращаем сведения о нем. Пример строки в формате JSON будет выглядеть так:

{“name”:”Ivan”, “surname”:”Petrov”, “age”:”40”}

Подключаем библиотеку GSON.

Теперь напишем пример сериализации/десериализации данных JSON, используя библиотеку GSON от Google.

Сначала подключим библиотеку.

Если вы используете в качестве сборщика Gradle, добавьте новую зависимость:

Вот, что нужно прописать в файл pom.xml тем, кто использует Maven:

Пример.

Нам надо преобразовать данные JSON в Java-объект. Пусть у нас имеется класс Customer, представляющий заказчика, с определенными полями: имя, фамилия и возраст.

Аннотация @SerializedName используется для изменения выходного имени свойства при сериализации, если это потребуется.

Итак, мы получили ответ от сервера в виде строки response. Для выполнения парсинга нам необходимо получить объект класса Gson. Для этого воспользуемся билдером GsonBuilder. Преобразование JSON в объект класса Customer выполняется методом Gson.from().

Но этот пример производит разбор запроса, состоящего из одного объекта. Часто вы получаете целый массив объектов и желательно было бы при выполнении десериализации сохранить их в коллекции. Такая операция займет чуть больше кода:

Здесь методу fromJson() мы в качестве второго параметра должны передаем тип нашей коллекции.

Для парсинга в JSON-строку принцип тот же самый, только используется метод Gson.toJson().

2 комментария

  1. Xelon Ответить

    Полезная информация, побольше примеров.
    class Customer — есть неточность.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *