在本章中,我们将解释具有内部类的类的序列化/反序列化。
参考以下示例代码片段 -
Student student = new Student(); student.setRollNo(1); Student.Name name = student.new Name(); name.firstName = "Max"; name.lastName = "Su"; student.setName(name); //serialize inner class object String nameString = gson.toJson(name); System.out.println(nameString); //deserialize inner class object name = gson.fromJson(nameString,Student.Name.class); System.out.println(name.getClass());
示例
让我们来看看一个内部类的序列化/反序列化。 创建一个名为GsonTester
的Java类文件:GsonTester.java -
import com.google.gson.Gson; public class GsonTester { public static void main(String args[]) { Student student = new Student(); student.setRollNo(1); Student.Name name = student.new Name(); name.firstName = "Mahesh"; name.lastName = "Kumar"; student.setName(name); Gson gson = new Gson(); String jsonString = gson.toJson(student); System.out.println(jsonString); student = gson.fromJson(jsonString, Student.class); System.out.println("Roll No: "+ student.getRollNo()); System.out.println("First Name: "+ student.getName().firstName); System.out.println("Last Name: "+ student.getName().lastName); String nameString = gson.toJson(name); System.out.println(nameString); name = gson.fromJson(nameString,Student.Name.class); System.out.println(name.getClass()); System.out.println("First Name: "+ name.firstName); System.out.println("Last Name: "+ name.lastName); } } class Student { private int rollNo; private Name name; public int getRollNo() { return rollNo; } public void setRollNo(int rollNo) { this.rollNo = rollNo; } public Name getName() { return name; } public void setName(Name name) { this.name = name; } class Name { public String firstName; public String lastName; } }
执行上面示例代码,得到以下结果 -
{"rollNo":1,"name":{"firstName":"Max","lastName":"Su"}} Roll No: 1 First Name: Max Last Name: Su {"firstName":"Max","lastName":"Su"} class Student$Name First Name: Max Last Name: Su
参考以下代码实现 -
Student student = new Student(); student.setRollNo(1); Student.Name name = new Student.Name(); name.firstName = "Mahesh"; name.lastName = "Kumar"; student.setName(name); //serialize static inner class object String nameString = gson.toJson(name); System.out.println(nameString); //deserialize static inner class object name = gson.fromJson(nameString,Student.Name.class); System.out.println(name.getClass());
示例
我们来看一个实例,其中包含一个静态内部类的序列化/反序列化。 创建一个名为GsonTester
的Java类文件:GsonTester.java -
import com.google.gson.Gson; public class GsonTester { public static void main(String args[]) { Student student = new Student(); student.setRollNo(1); Student.Name name = new Student.Name(); name.firstName = "Max"; name.lastName = "Su"; student.setName(name); Gson gson = new Gson(); String jsonString = gson.toJson(student); System.out.println(jsonString); student = gson.fromJson(jsonString, Student.class); System.out.println("Roll No: "+ student.getRollNo()); System.out.println("First Name: "+ student.getName().firstName); System.out.println("Last Name: "+ student.getName().lastName); String nameString = gson.toJson(name); System.out.println(nameString); name = gson.fromJson(nameString,Student.Name.class); System.out.println(name.getClass()); System.out.println("First Name: "+ name.firstName); System.out.println("Last Name: "+ name.lastName); } } class Student { private int rollNo; private Name name; public int getRollNo() { return rollNo; } public void setRollNo(int rollNo) { this.rollNo = rollNo; } public Name getName() { return name; } public void setName(Name name) { this.name = name; } static class Name { public String firstName; public String lastName; } } Verify the resul
执行上面示例代码,得到以下输出结果 -
{"rollNo":1,"name":{"firstName":"Max","lastName":"Su"}} Roll No: 1 First Name: Max Last Name: Su {"firstName":"Max","lastName":"Su"} class Student$Name First Name: Max Last Name: Su