介绍
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它易于阅读和编写,广泛用于客户端与服务器之间的数据交换。在本实验中,你将学习如何使用流行的 Java JSON 库,包括 Jackson、Gson、Genson 和 Json-io,将对象序列化和反序列化为 JSON 格式。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它易于阅读和编写,广泛用于客户端与服务器之间的数据交换。在本实验中,你将学习如何使用流行的 Java JSON 库,包括 Jackson、Gson、Genson 和 Json-io,将对象序列化和反序列化为 JSON 格式。
cd ~/project
导航到项目目录。touch JsonLab.java
命令,为本实验创建一个新的 Java 文件,并粘贴以下代码:import java.io.IOException;
public class JsonLab {
public static void main(String[] args) throws IOException {
ClassA classAObj = new ClassA("Demo", 20.0); // 创建对象以便稍后序列化和反序列化
}
// 在此处添加 ClassA 类
}
pom.xml
文件中添加 Jackson 的 Maven 依赖:<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
</dependencies>
ObjectMapper
类将对象序列化和反序列化为 JSON 字符串,如下所示: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("Serialized String: " + jsonString);
// 反序列化
ClassA objFromStr = objMapper.readValue(jsonString, ClassA.class);
System.out.print("Deserialized Object: " + objFromStr.getField1() + " " + objFromStr.getField2());
}
}
pom.xml
文件中添加 Gson 的 Maven 依赖:<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("Serialized String: " + jsonStrFromObj);
// 反序列化
ClassA objFromJsonStr = gson.fromJson(jsonStrFromObj, ClassA.class);
System.out.print("Deserialized Object: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
}
}
pom.xml
文件中添加 Genson 的 Maven 依赖:<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("Serialized String: " + jsonStrFromObj);
// 反序列化
ClassA objFromJsonStr = genson.deserialize(jsonStrFromObj, ClassA.class);
System.out.print("Deserialized Object: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
}
}
pom.xml
文件中添加 Json-io 的 Maven 依赖:<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("Serialized String: " + jsonStrFromObj);
// 反序列化
ClassA objFromJsonStr = (ClassA) JsonReader.jsonToJava(jsonStrFromObj);
System.out.print("Deserialized Object: " + objFromJsonStr.getField1() + " " + objFromJsonStr.getField2());
}
}
在本实验中,你学习了如何使用多种 Java JSON 库将对象转换为 JSON 格式,以及如何将 JSON 转换回对象。我们学习了如何使用 Jackson、Gson、Genson 和 Json-io 库对对象进行序列化和反序列化操作。