打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
008

1. 默认情况下, GSON从序列化/反序列化过程中排除瞬态和静态字段。

2. 例子

2.1. 新建一个名为GsonExcludeFields的Java项目, 同时添加相关jar包。

2.2. 新建Student.java

  1. package com.fj.ef;
  2. import com.google.gson.Gson;
  3. import com.google.gson.GsonBuilder;
  4. public class App1 {
  5. public static void main(String[] args) {
  6. // 创建一个学生对象
  7. Student student = new Student(1111, "小明", 21);
  8. Student.className = "VI";
  9. // 1. Gson构造器
  10. GsonBuilder builder = new GsonBuilder();
  11. // 2. 格式良好的输出
  12. builder.setPrettyPrinting();
  13. // 3. 创建Gson对象
  14. Gson gson = builder.create();
  15. // 4. JavaBean转化为JSON字符串
  16. String jsonString = gson.toJson(student);
  17. System.out.println(jsonString);
  18. }
  19. }

2.3. 新建App1.java

  1. package com.fj.ef;
  2. import com.google.gson.annotations.Expose;
  3. public class Student {
  4. @Expose
  5. private transient int id;
  6. @Expose
  7. private String name;
  8. private int age;
  9. @Expose
  10. public static String className;
  11. public Student() {
  12. }
  13. public Student(int id, String name, int age) {
  14. this.id = id;
  15. this.name = name;
  16. this.age = age;
  17. }
  18. public int getId() {
  19. return id;
  20. }
  21. public void setId(int id) {
  22. this.id = id;
  23. }
  24. public String getName() {
  25. return name;
  26. }
  27. public void setName(String name) {
  28. this.name = name;
  29. }
  30. public int getAge() {
  31. return age;
  32. }
  33. public void setAge(int age) {
  34. this.age = age;
  35. }
  36. public String toString() {
  37. return "Student [name: " + name + ", age: " + age + "]";
  38. }
  39. }

2.4. 运行App1.java

3. 使用excludeFieldsWithModifiers

3.1. GsonBuilder使用来自序列化/反序列化过程的excludeFieldsWithModifiers()方法控制排除使用特定修饰符的字段。

3.2. 新建App2.java

  1. package com.fj.ef;
  2. import java.lang.reflect.Modifier;
  3. import com.google.gson.Gson;
  4. import com.google.gson.GsonBuilder;
  5. public class App2 {
  6. public static void main(String[] args) {
  7. // 创建一个学生对象
  8. Student student = new Student(1111, "小明", 21);
  9. Student.className = "VI";
  10. // 1. Gson构造器
  11. GsonBuilder builder = new GsonBuilder();
  12. // 2. 排除使用特定修饰符的字段
  13. builder.excludeFieldsWithModifiers(Modifier.TRANSIENT);
  14. // 3. 格式良好的输出
  15. builder.setPrettyPrinting();
  16. // 4. 创建Gson对象
  17. Gson gson = builder.create();
  18. // 5. JavaBean转化为JSON字符串
  19. String jsonString = gson.toJson(student);
  20. System.out.println(jsonString);
  21. }
  22. }

3.3. 运行App2.java

4. 使用@Expose Annotation

4.1. Gson提供@Expose注解根据其修饰范围来控制类的序列化/反序列化。

4.2. GsonBuilder.excludeFieldsWithoutExposeAnnotation()方法来指示只有@Expose修饰的字段才进行序列化/反序列化。瞬态和静态字段即使使用@Expose修饰依然被排除。

4.3. 新建App3.java

  1. package com.fj.ef;
  2. import com.google.gson.Gson;
  3. import com.google.gson.GsonBuilder;
  4. public class App3 {
  5. public static void main(String[] args) {
  6. // 创建一个学生对象
  7. Student student = new Student(1111, "小明", 21);
  8. Student.className = "VI";
  9. // 1. Gson构造器
  10. GsonBuilder builder = new GsonBuilder();
  11. // 2. 只序列化/反序列化使用@Expose修饰的字段, 瞬态和静态字段即使使用@Expose修饰依然被排除
  12. builder.excludeFieldsWithoutExposeAnnotation();
  13. // 3. 格式良好的输出
  14. builder.setPrettyPrinting();
  15. // 4. 创建Gson对象
  16. Gson gson = builder.create();
  17. // 5. JavaBean转化为JSON字符串
  18. String jsonString = gson.toJson(student);
  19. System.out.println(jsonString);
  20. }
  21. }

4.4. 运行App3.java

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Json转换利器Gson之实例二
gson使用在android使用例子
Gson 解析教程
Google Gson 使用简介
Gson User Guide
Gson用户指南
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服