Gson 序列化内部类
gson 序列化内部类
在本章中,我们将解释具有内部类的类的序列化/反序列化。
1. 嵌套的内部类示例
student student = new student(); student.setrollno(1); student.name name = student.new name(); name.firstname = "mahesh"; name.lastname = "kumar"; 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());
1) 范例
让我们看一个带有内部类的类的序列化/反序列化的示例。在c:> gson_workspace中创建名为 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; } }
2) 验证结果
使用 javac 编译器编译类如下 -
c:\gson_workspace>javac gsontester.java
现在运行gsontester查看结果 -
c:\gson_workspace>java gsontester
验证输出。
{"rollno":1,"name":{"firstname":"mahesh","lastname":"kumar"}} roll no: 1 first name: mahesh last name: kumar {"firstname":"mahesh","lastname":"kumar"} class student$name first name: mahesh last name: kumar
2. 嵌套静态内部类示例
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());
1) 范例
让我们看一个带有静态内部类的类的序列化/反序列化的示例。在c:> gson_workspace中创建名为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 = "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; } static class name { public string firstname; public string lastname; } }
2) 验证结果
使用 javac 编译器编译类如下:
c:\gson_workspace>javac gsontester.java
现在运行 gsontester 查看结果:
c:\gson_workspace>java gsontester
验证输出。
{"rollno":1,"name":{"firstname":"mahesh","lastname":"kumar"}} roll no: 1 first name: mahesh last name: kumar {"firstname":"mahesh","lastname":"kumar"} class student$name first name: mahesh last name: kumar