美文网首页
Java中某些属性不想被序列化

Java中某些属性不想被序列化

作者: wyn_做自己 | 来源:发表于2022-04-22 10:19 被阅读0次

今日份鸡汤:不要怕,不要怂,大起大落谁都有,拍拍灰尘继续走。

两种实现方式:

方式一:transient 关键字

对于不想进行序列化的变量,使用 transient 关键字修饰。

transient 关键字的作用是:

阻止实例中那些用此关键字修饰的的变量序列化;
当对象被反序列化时,被 transient 修饰的变量值不会被持久化和恢复。
transient 只能修饰变量,不能修饰类和方法。

使用 transient 来描述字段,将不能被序列化和反序列化,示例:

public class UserSimple {  
      String name;
      String email;
      int age;
      transient boolean isDeveloper; // will not be serialized or deserialized
}
方式二:@Expose注解

当你不需要完全序列化model字段时,我们就可以使用 @Expose 来解决。

@Expose 默认有两个属性:serialize 和 deserialize,默认值都为 true,如果你给字段设置了 @Expose 注解,但是没有设置serialize 和 deserialize,那 model 的字段都将会输出。

示例:

public class UserSimple {  
        @Expose()
        String name; // equals serialize & deserialize
 
        @Expose(serialize = false, deserialize = false)
        String email; // equals neither serialize nor deserialize
 
        @Expose(serialize = false)
        int age; // equals only deserialize
 
        @Expose(deserialize = false)
        boolean isDeveloper; // equals only serialize
}

根据 @Expose 的用法,UserSimple 序列化 JSON 输出只有 name 和 isDeveloper,其他字段就不会被输出,因为 serialize 都是 false;

反序列化的话,只有 email 和 isDeveloper 被忽略,因为 deserialize = false

使用 @Expose 的前期是我们也需要使用 GsonBuilder 创建一个 Gson 实例:

GsonBuilder builder = new GsonBuilder();  
builder.excludeFieldsWithoutExposeAnnotation();  
Gson gson = builder.create(); 

只有这样 Gson 在解析的时候 @Expose 才会生效。

相关文章

  • Java中某些属性不想被序列化

    今日份鸡汤:不要怕,不要怂,大起大落谁都有,拍拍灰尘继续走。 两种实现方式: 方式一:transient 关键字 ...

  • java的关键字transient

    Java中transient关键字的作用,简单地说,就是让某些被修饰的成员属性变量不被序列化,这一看好像很好理解,...

  • java对象序列化为字符串

    1 场景 java对象某些时候,需要序列化成字符串存储在数据库中,需要的时候,再将字符串反序列化为java对象。 ...

  • 注解笔记一

    1、@jsonignore 作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。

  • 27、Java 序列化中如果有些字段不想进行序列化,怎么办?

    Java 序列化中如果有些字段不想进行序列化,怎么办? 对于不想进行序列化的变量,使用 transient 关键字...

  • unity3d之字段的属性

    字段属性 属性解释HideInInspector在Inspector中隐藏公有变量(但是被序列化,即保存值)。No...

  • transient关键字

    Java中的序列化 在讨论transient之前,有必要先搞清楚Java中序列化的含义: Java中对象的序列化指...

  • JAVA反序列化漏洞

    目录 反序列化漏洞序列化和反序列化JAVA WEB中的序列化和反序列化对象序列化和反序列范例JAVA中执行系统命令...

  • Android高级进阶之-Hook技术实现页面跳转权限验证,绕过

    java中的Hook技术简单来说就是利用反射,去替换某些对象的某些属性,我们可以对属性进行修改,增加我们想要执行的...

  • java之transient

    在需要将对象序列化,但是不想序列化敏感信息时,使用transient关键字对jvm“说”我不想要序列化这个属性,注...

网友评论

      本文标题:Java中某些属性不想被序列化

      本文链接:https://www.haomeiwen.com/subject/popwertx.html