Gson 反序列化和序列化瞬态场

Posted

技术标签:

【中文标题】Gson 反序列化和序列化瞬态场【英文标题】:Gson deserialize and serialize transient field 【发布时间】:2015-10-18 15:06:15 【问题描述】:

我有以下 Pojo 类与一个字段瞬态:

public class User implements Serializable 

    public static final long serialVersionUID = 1L;
    public String name;
    transient public UserSession[] bookings;

我希望使用 Gson 库对瞬态文件进行序列化和反序列化,但不希望在 File 上序列化该文件。 我怎样才能实现它?

【问题讨论】:

创建一个自定义序列化器来序列化你的类怎么样? 【参考方案1】:

如in the documentation所述:

默认情况下,如果您将字段标记为瞬态,它将被排除。同样,如果一个字段被标记为“静态”,那么默认情况下它将被排除在外。如果要包含一些瞬态字段,则可以执行以下操作:

导入 java.lang.reflect.Modifier;

Gson gson = new GsonBuilder() .excludeFieldsWithModifiers(Modifier.STATIC) .create();

这将从 Gson 序列化中排除 static 字段,但不排除 transientvolatile 字段。

【讨论】:

我无法重新创建它。烦人!

以上是关于Gson 反序列化和序列化瞬态场的主要内容,如果未能解决你的问题,请参考以下文章

Java:静态瞬态字段

使用 Gson 序列化和反序列化枚举 [重复]

Gson将类序列化和反序列化

如何实现 Gson 序列化/反序列化过程中 过滤指定字段

Android开发中混淆后Gson序列化反序列化的那些坑

Gson解析(序列化,反序列化)