Введение
JSON (JavaScript Object Notation) — это легковесный формат обмена данными. Он легко читается и пишется и широко используется для обмена данными между клиентом и сервером. В этом лабораторном занятии вы научитесь использовать популярные Java JSON-библиотеки, в том числе Jackson, Gson, Genson и Json-io, для сериализации и десериализации объектов в формат JSON.
Настройка проекта
- Откройте терминал и перейдите в директорию проекта, выполнив команду
cd ~/project. - Создайте новый 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
- Чтобы работать с Jackson, нам нужно добавить зависимость Maven для Jackson в файл
pom.xml:
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
</dependencies>
- Далее, нам нужно сериализовать и десериализовать объекты в 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
- Чтобы работать с Gson, нам нужно добавить зависимость Maven для Gson в файл
pom.xml:
<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
</dependencies>
- Далее, нам нужно сериализовать и десериализовать объекты с использованием объекта
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
- Чтобы работать с Genson, нам нужно добавить зависимость Maven для Genson в файл
pom.xml:
<dependencies>
<dependency>
<groupId>com.owlike</groupId>
<artifactId>genson</artifactId>
<version>${genson.version}</version>
</dependency>
</dependencies>
- Далее, нам нужно сериализовать и десериализовать объекты с использованием объекта
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
- Чтобы работать с библиотекой Json-io, нам нужно добавить зависимость Maven для Json-io в файл
pom.xml:
<dependencies>
<dependency>
<groupId>com.cedarsoftware</groupId>
<artifactId>json-io</artifactId>
<version>${json-io.version}</version>
</dependency>
</dependencies>
- Далее, нам нужно сериализовать и десериализовать объекты с использованием
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.



