如果JSON字符串具有该变量,是否为具有transient属性的变量赋值?

时间:2015-08-20 08:07:40

标签: java android json gson transient

我不太熟悉序列化,特别是与瞬态属性有关,所以我想知道如果被序列化的JSON字符串包含具有相应值的关键字/变量,是否为具有transient属性的变量赋值。

假设我有一个JSON:

  

“json”:{“title”:“TEST”,“date”:“2015-07-20”}

我有一个班级:

public class MyClass {
    protected String title;
    protected transient String date;
}

当我使用GSON的fromJson()方法时,变量日期会在JSON中收到 date 的值吗?

编辑:只是为了清除问题,我不打算使用GsonBuilder,只是默认设置。我真的想知道它如何处理我陈述的案例

2 个答案:

答案 0 :(得分:3)

不,不会。来自文档

  

如果字段标记为瞬态(默认情况下),则忽略该字段   包含在JSON序列化或反序列化中。

你可以找到它here

答案 1 :(得分:1)

默认情况下会被忽略。来自docs

  

如果某个字段标记为瞬态,(默认情况下)会被忽略而不是   包含在JSON序列化或反序列化中。

但您可以通过构建特殊的Gson对象来更改默认行为:

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

将包括瞬态字段。