当前位置: 首页 > 知识库问答 >
问题:

Gson:序列化瞬态字段?

孟浩然
2023-03-14

是否有方法序列化类的瞬态字段?文档中提到默认情况下不支持它,但是否有办法打开它?

非常感谢

共有1个答案

赵朝
2023-03-14

我不是Gson专家,但我认为你可以添加注释

@com.google.gson.annotations.Expose

这里是javadocs——请注意,您还必须做一些其他事情

或者,你也可以打电话

GsonBuilder.excludeFieldsWithModifiers(int... modifiers)

并省略瞬态标志。在此文档中搜索“Java修饰符排除”(或瞬态)

然而,正如Dave和Louis所评论的,序列化瞬态字段是不常见的。

 类似资料:
  • 问题内容: 在Java中进行序列化后,是否可以将字段设置为任何非默认值?我的用例是一个缓存变量- 这就是为什么。我也有一个习惯,即不要更改字段(即,地图的内容已更改,但对象本身保持不变)。但是,这些属性似乎是矛盾的- 尽管编译器允许这样的组合,但除反序列化之后,我无法将字段设置为任何值。 我尝试了以下操作,但没有成功: 简单的字段初始化(如示例所示):这是我通常所做的,但是在未序列化之后似乎没有发

  • 问题内容: 使用Gson 2.2.2,我正在尝试序列化POJO(行为)的数组列表。 我有一个适配器,几乎是我在网上看到的一个副本: 我这样注册: 然后,当我尝试序列化我的ArrayList时: 我出现堆栈溢出。 似乎在线上: 它开始递归循环,一次又一次地通过我的序列化器。那么,我该如何注册它以免发生这种情况?我需要序列化列表并保持多态性。 问题答案: 看起来您发现了JsonSerializer文档

  • 我使用Redis作为Spring数据的数据库,没有自定义值或哈希值序列化器。我假设standrad JdkSerializationRedisSerializer应该用于对象序列化。看起来有些对象的临时字段被序列化到数据库中。 我如何克服这个问题?

  • 问题内容: 有效的Java-要保持单例保证,您必须声明所有实例字段都是瞬态的,并提供一个“ readResolve”方法。通过在此处声明瞬态场能实现什么?这是一个示例: 无论我是否将’state’变量声明为瞬态,我都会将c.getState()gettign打印为25。我在这里缺少什么吗? 问题答案: 通过使属性变为瞬态而获得的好处是,您无需序列化状态。序列化是不必要的,因为无论如何它都会被rea

  • 考虑以下代码: 现在扩展了一个实现接口的类。类和是带有一堆getter和setter的POJOS。FindBugs抱怨和字段说: 这个Serializable类定义了一个非基元实例字段,它既不是瞬态的、Serializable的,也不java.lang.Object的,并且似乎没有实现Externalizable接口或readObject()和WriteObject()方法。 好吧,所以一切都很好

  • 问题内容: 我们将JSON序列化与Jackson结合使用,以公开系统的内部状态以调试属性。 默认情况下,杰克逊不会序列化瞬态字段-但我也希望对其进行序列化。如何序列化这些字段? 我知道的一种方法是为这些字段提供getter-但我不想这样做,因为我有一些我不想被调用的getX方法(例如,有些getter会更改对象状态)。 我知道我可以创建一个注释,但是我真的想避免使用它。 所以我的问题是:有没有一种