Работа с JSON в Java: парсинг и сериализация для начинающих

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Работа с JSON в Java: парсинг и сериализация для начинающих

JSON (JavaScript Object Notation) — это легкий формат обмена данными, который широко используется в веб-разработке, мобильных приложениях и микросервисах. Для Java-разработчика умение читать (парсить) и создавать (сериализовать) JSON — обязательный навык. В этой статье мы разберем основы работы с JSON на Java, используя две самые популярные библиотеки: Jackson и Gson. Материал рассчитан на начинающих, поэтому все примеры будут максимально простыми и понятными.

Что такое парсинг и сериализация JSON?

Прежде чем перейти к коду, давайте определимся с понятиями:

  • Сериализация — это процесс преобразования Java-объекта в строку JSON. Например, вы создали объект User и хотите отправить его на сервер в виде JSON.
  • Парсинг (десериализация) — обратный процесс: преобразование строки JSON обратно в Java-объект. Например, вы получили ответ от API и хотите работать с данными как с обычным объектом.

Подготовка проекта: добавление зависимостей

Для работы с JSON нам понадобятся внешние библиотеки. Рассмотрим два самых популярных варианта.

Вариант 1: Jackson (рекомендуется для новичков)

Jackson — это мощная и производительная библиотека. Если вы используете Maven, добавьте в pom.xml:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>

Вариант 2: Gson (от Google)

Gson — легкая и интуитивно понятная библиотека. Зависимость для Maven:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>

Обе библиотеки можно скачать вручную с Maven Central, если вы не используете систему сборки.

Пример данных: класс User

Для всех примеров мы будем использовать простой класс User:

public class User {
    private String name;
    private int age;
    private String email;

    // Обязательно нужен пустой конструктор для Jackson и Gson
    public User() {}

    public User(String name, int age, String email) {
        this.name = name;
        this.age = age;
        this.email = email;
    }

    // Геттеры и сеттеры (важны для сериализации)
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }

    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
}

Парсинг JSON (String → Java Object)

Разберем, как прочитать JSON-строку и превратить ее в объект User.

С помощью Jackson

import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonParsingExample {
    public static void main(String[] args) throws Exception {
        String jsonString = "{ \"name\": \"Иван\", \"age\": 30, \"email\": \"ivan@example.com\" }";

        ObjectMapper mapper = new ObjectMapper();
        User user = mapper.readValue(jsonString, User.class);

        System.out.println("Имя: " + user.getName());
        System.out.println("Возраст: " + user.getAge());
    }
}

С помощью Gson

import com.google.gson.Gson;

public class GsonParsingExample {
    public static void main(String[] args) {
        String jsonString = "{ \"name\": \"Мария\", \"age\": 25, \"email\": \"maria@example.com\" }";

        Gson gson = new Gson();
        User user = gson.fromJson(jsonString, User.class);

        System.out.println("Имя: " + user.getName());
        System.out.println("Email: " + user.getEmail());
    }
}

Сериализация (Java Object → String JSON)

Теперь сделаем обратное — создадим объект User и преобразуем его в JSON.

С помощью Jackson

import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonSerializationExample {
    public static void main(String[] args) throws Exception {
        User user = new User("Алексей", 28, "alex@example.com");

        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(user);

        System.out.println(json);
        // Вывод: {"name":"Алексей","age":28,"email":"alex@example.com"}
    }
}

С помощью Gson

import com.google.gson.Gson;

public class GsonSerializationExample {
    public static void main(String[] args) {
        User user = new User("Елена", 22, "elena@example.com");

        Gson gson = new Gson();
        String json = gson.toJson(user);

        System.out.println(json);
        // Вывод: {"name":"Елена","age":22,"email":"elena@example.com"}
    }
}

Работа с массивами и списками JSON

Часто JSON содержит не один объект, а массив. Разберем, как работать с коллекциями.

Парсинг массива JSON с Jackson

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;

public class JacksonListExample {
    public static void main(String[] args) throws Exception {
        String jsonArray = "[{\"name\":\"Иван\",\"age\":30},{\"name\":\"Петр\",\"age\":25}]";

        ObjectMapper mapper = new ObjectMapper();
        List<User> users = mapper.readValue(jsonArray, new TypeReference<List<User>>() {});

        for (User u : users) {
            System.out.println(u.getName() + " - " + u.getAge());
        }
    }
}

Сериализация списка в JSON с Gson

import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;

public class GsonListExample {
    public static void main(String[] args) {
        List<User> users = new ArrayList<>();
        users.add(new User("Анна", 27, "anna@test.com"));
        users.add(new User("Сергей", 35, "sergey@test.com"));

        Gson gson = new Gson();
        String json = gson.toJson(users);

        System.out.println(json);
        // Вывод: [{"name":"Анна","age":27,"email":"anna@test.com"},{"name":"С                

Блоги

Рекомендаций по книгам