Библиотеки Java для работы с JSON

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

JSON (JavaScript Object Notation) — это легковесный формат обмена данными. Он легко читается и пишется и широко используется для обмена данными между клиентом и сервером. В этом лабораторном занятии вы научитесь использовать популярные Java JSON-библиотеки, в том числе Jackson, Gson, Genson и Json-io, для сериализации и десериализации объектов в формат JSON.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/serialization("Serialization") java/FileandIOManagementGroup -.-> java/io("IO") subgraph Lab Skills java/classes_objects -.-> lab-117768{{"Библиотеки Java для работы с JSON"}} java/serialization -.-> lab-117768{{"Библиотеки Java для работы с JSON"}} java/io -.-> lab-117768{{"Библиотеки Java для работы с JSON"}} end

Настройка проекта

  1. Откройте терминал и перейдите в директорию проекта, выполнив команду cd ~/project.
  2. Создайте новый Java-файл для этой лабораторной работы, выполнив команду touch JsonLab.java в терминале, и вставьте в него следующий код:
import java.io.IOException;

public class JsonLab {
    public static void main(String[] args) throws IOException {
        ClassA classAObj = new ClassA("Demo", 20.0); // создать объект для последующей сериализации и десериализации
    }

    // добавьте класс ClassA здесь
}

Использование библиотеки Jackson

  1. Чтобы работать с Jackson, нам нужно добавить зависимость Maven для Jackson в файл pom.xml:
<dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
    </dependency>
</dependencies>
  1. Далее, нам нужно сериализовать и десериализовать объекты в JSON-строку с использованием класса ObjectMapper следующим образом:
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonLab {
  public static void main(String[] args) throws IOException {
    ObjectMapper objMapper = new ObjectMapper();
    ClassA classAObj = new ClassA("Demo", 20.0);

    // Сериализация
    String jsonString = objMapper.writeValueAsString(classAObj);
    System.out.println("Сериализованная строка: " + jsonString);

    // Десериализация
    ClassA objFromStr = objMapper.readValue(jsonString, ClassA.class);
    System.out.print("Десериализованный объект: " + objFromStr.getField1() + " " + objFromStr.getField2());
  }
}

Использование библиотеки Gson

  1. Чтобы работать с Gson, нам нужно добавить зависимость Maven для Gson в файл pom.xml:
<dependencies>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>${gson.version}</version>
    </dependency>
</dependencies>
  1. Далее, нам нужно сериализовать и десериализовать объекты с использованием объекта Gson следующим образом:
import com.google.gson.Gson;

public class JsonLab {
  public static void main(String[] args) throws IOException {
    Gson gson = new Gson();
    ClassA obj = new ClassA("Demo", 20.0);

    // Сериализация
    String jsonStrFromObj = gson.toJson(obj);
    System.out.println("Сериализованная строка: " + jsonStrFromObj);

    // Десериализация
    ClassA objFromJsonStr = gson.fromJson(jsonStrFromObj, ClassA.class);
    System.out.print("Десериализованный объект: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
  }
}

Использование библиотеки Genson

  1. Чтобы работать с Genson, нам нужно добавить зависимость Maven для Genson в файл pom.xml:
<dependencies>
    <dependency>
        <groupId>com.owlike</groupId>
        <artifactId>genson</artifactId>
        <version>${genson.version}</version>
    </dependency>
</dependencies>
  1. Далее, нам нужно сериализовать и десериализовать объекты с использованием объекта Genson следующим образом:
import com.owlike.genson.Genson;

public class JsonLab {
  public static void main(String[] args) throws IOException {
    Genson genson = new Genson();
    ClassA obj = new ClassA("Demo", 20.0);

    // Сериализация
    String jsonStrFromObj = genson.serialize(obj);
    System.out.println("Сериализованная строка: " + jsonStrFromObj);

    // Десериализация
    ClassA objFromJsonStr = genson.deserialize(jsonStrFromObj, ClassA.class);
    System.out.print("Десериализованный объект: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
  }
}

Использование библиотеки Json-io

  1. Чтобы работать с библиотекой Json-io, нам нужно добавить зависимость Maven для Json-io в файл pom.xml:
<dependencies>
  <dependency>
    <groupId>com.cedarsoftware</groupId>
    <artifactId>json-io</artifactId>
    <version>${json-io.version}</version>
  </dependency>
</dependencies>
  1. Далее, нам нужно сериализовать и десериализовать объекты с использованием JsonWriter и JsonReader следующим образом:
import com.cedarsoftware.util.io.JsonReader;
import com.cedarsoftware.util.io.JsonWriter;

public class JsonLab {
  public static void main(String[] args) throws IOException {
    ClassA obj = new ClassA("Demo", 20.0);

    // Сериализация
    String jsonStrFromObj = JsonWriter.objectToJson(obj);
    System.out.println("Сериализованная строка: " + jsonStrFromObj);

    // Десериализация
    ClassA objFromJsonStr = (ClassA) JsonReader.jsonToJava(jsonStrFromObj);
    System.out.print("Десериализованный объект: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
  }
}

Резюме

В этом практическом занятии вы научитесь использовать различные Java JSON-библиотеки для преобразования объектов в формат JSON и наоборот. Мы узнали, как использовать библиотеки Jackson, Gson, Genson и Json-io для сериализации и десериализации объектов в JSON.