Gson 從序列化中排除字段
gson 從序列化中排除字段
默認情況下,gson 從序列化/反序列化過程中排除瞬態和靜態字段。我們來看看下面的例子。
1) 范例
在c:> gson_workspace中創建名為 gsontester 的java類文件。
文件:gsontester.java
import com.google.gson.gson; import com.google.gson.gsonbuilder; public class gsontester { public static void main(string args[]) { gsonbuilder builder = new gsonbuilder(); gson gson = builder.create(); student student = new student(); student.setrollno(1); student.setname("mahesh kumar"); student.setverified(true); student.setid(1); student.classname = "vi"; string jsonstring = gson.tojson(student); system.out.println(jsonstring); } } class student { private int rollno; private string name; private boolean verified; private transient int id; public static string classname; public int getrollno() { return rollno; } public void setrollno(int rollno) { this.rollno = rollno; } public string getname() { return name; } public void setname(string name) { this.name = name; } public void setverified(boolean verified) { this.verified = verified; } public boolean isverified() { return verified; } public int getid() { return id; } public void setid(int id) { this.id = id; } }
2) 驗證結果
使用 javac 編譯器編譯類如下 -
c:\gson_workspace>javac gsontester.java
現在運行 gsontester 查看結果 -
c:\gson_workspace>java gsontester
驗證輸出
{"rollno":1,"name":"mahesh kumar","verified":true}
1. 使用 excludefieldswithmodifiers
gsonbuilder使用來自序列化/反序列化過程的excludefieldswithmodifiers()方法控制使用特定修飾符排除字段。請參閱以下示例。
1) 范例
在c:> gson_workspace中創建名為gsontester的java類文件。
文件:gsontester.java
import java.lang.reflect.modifier; import com.google.gson.gson; import com.google.gson.gsonbuilder; public class gsontester { public static void main(string args[]) { gsonbuilder builder = new gsonbuilder(); builder.excludefieldswithmodifiers(modifier.transient); gson gson = builder.create(); student student = new student(); student.setrollno(1); student.setname("mahesh kumar"); student.setverified(true); student.setid(1); student.classname = "vi"; string jsonstring = gson.tojson(student); system.out.println(jsonstring); } } class student { private int rollno; private string name; private boolean verified; private transient int id; public static string classname; public int getrollno() { return rollno; } public void setrollno(int rollno) { this.rollno = rollno; } public string getname() { return name; } public void setname(string name) { this.name = name; } public void setverified(boolean verified) { this.verified = verified; } public boolean isverified() { return verified; } public int getid() { return id; } public void setid(int id) { this.id = id; } }
2) 驗證結果
使用 javac 編譯器編譯類如下:
c:\gson_workspace>javac gsontester.java
現在運行 gsontester 查看結果:
c:\gson_workspace>java gsontester
驗證輸出
{"rollno":1,"name":"mahesh kumar","verified":true,"classname":"vi"}
2. 使用@expose annotation
gson提供 @expose 注釋來根據其范圍控制類的json序列化/反序列化。考慮以下具有 @expose 支持的變量的類。在此類中,將公開 name 和 rollno 變量以進行序列化。然后我們使用 gsonbuilder.excludefieldswithoutexposeannotation() 方法來指示只有序列化/反序列化的公開變量。請參閱以下示例。
1) 范例
在c:> gson_workspace中創建名為 gsontester 的java類文件。
文件:gsontester.java
import com.google.gson.gson; import com.google.gson.gsonbuilder; import com.google.gson.annotations.expose; public class gsontester { public static void main(string args[]) { gsonbuilder builder = new gsonbuilder(); builder.excludefieldswithoutexposeannotation(); gson gson = builder.create(); student student = new student(); student.setrollno(1); student.setname("mahesh kumar"); student.setverified(true); student.setid(1); student.classname = "vi"; string jsonstring = gson.tojson(student); system.out.println(jsonstring); } } class student { @expose private int rollno; @expose private string name; private boolean verified; private int id; public static string classname; public int getrollno() { return rollno; } public void setrollno(int rollno) { this.rollno = rollno; } public string getname() { return name; } public void setname(string name) { this.name = name; } public void setverified(boolean verified) { this.verified = verified; } public boolean isverified() { return verified; } public int getid() { return id; } public void setid(int id) { this.id = id; } }
2) 驗證結果
使用 javac 編譯器編譯類如下 -
c:\gson_workspace>javac gsontester.java
現在運行 gsontester 查看結果 -
c:\gson_workspace>java gsontester
驗證輸出
{"rollno":1,"name":"mahesh kumar"}