介绍
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 类
}
使用 Jackson 库
- 要使用 Jackson,我们需要在
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());
}
}
使用 Gson 库
- 要使用 Gson,我们需要在
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());
}
}
使用 Genson 库
- 要使用 Genson,我们需要在
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());
}
}
使用 Json-io 库
- 要使用 Json-io 库,我们需要在
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 库对对象进行序列化和反序列化操作。



