Java对象序列化和反序列化是Java中常用的数据交换方式,其中序列化是将Java对象转换为字节流,可以储存到文件或网络流中,反序列化则是将字节流转换为Java对象。在Java中,序列化和反序列化的默认格式是二进制格式,而JSON格式则更加通用并且易于阅读。
默认格式的使用示例
序列化
当我们需要将一个Java对象进行序列化时,我们可以使用 ObjectOutputStream 对象,该对象提供了一个 writeObject 方法,该方法可以将一个对象序列化。
public class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
上述代码中,我们定义了一个人的类 Person,并实现了 Serializable 接口。现在我们希望将一个 Person 对象实例进行序列化:
Person person = new Person("Alice", 25);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.obj"));
oos.writeObject(person);
oos.close();
我们将一个 Person 对象实例进行了序列化,并将其写入到了文件系统中。
反序列化
当我们需要从文件系统或者网络中读取序列化的对象时,我们可以使用 ObjectInputStream 对象进行反序列化操作。该对象提供了一个 readObject 方法,可以反序列化一个对象:
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.obj"));
Person person = (Person) ois.readObject();
System.out.println(person.getName()); // 输出:Alice
System.out.println(person.getAge()); // 输出:25
ois.close();
我们使用 ObjectInputStream 对象的 readObject 方法,从文件系统中读取了一个序列化的 Person 对象,并成功反序列化成了一个 Java 对象。
JSON格式的使用示例
JSON 格式是一种轻量级、易于阅读的数据交换格式,其具有以下优点:
- 易于阅读和编写。
- 开源的文本格式,独立于语言和平台。
- 语法简单,易于理解。
在Java中,我们可以使用各种第三方插件来将 Java 对象和 JSON 格式相互转换,其中比较流行的插件有 Google 提供的 Gson 以及阿里巴巴提供的 FastJson。以下是以 Gson 的使用为例的说明:
序列化
使用 Gson 序列化 Java 对象为 JSON 格式,只需要导入相关第三方包,然后通过 Gson 对象的 toJson 方法即可实现。
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
}
Person person = new Person("Alice", 25);
Gson gson = new GsonBuilder().create();
String json = gson.toJson(person);
System.out.println(json); // 输出:{"name": "Alice", "age": 25}
反序列化
使用 Gson 将 JSON 格式反序列化为 Java 对象也非常简单。和序列化一样,只需要使用相关的 Gson 对象即可完成。
String json = "{\"name\": \"Alice\", \"age\": 25}";
Gson gson = new GsonBuilder().create();
Person person = gson.fromJson(json, Person.class);
System.out.println(person.getName()); // 输出:Alice
System.out.println(person.getAge()); // 输出:25
上述代码使用 Gson 对象的 fromJson 方法将 JSON 字符串转换成了 Person 对象,并成功地反序列化了 Java 对象。
总的来说,Java对象序列化和反序列化是 Java 编程中重要的知识点之一。理解其默认的序列化格式和 JSON 格式,可以帮助我们更好地进行对象间数据交换,进而实现更多有价值的编程需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java对象序列化与反序列化的默认格式和json格式使用示例 - Python技术站