如果 JSON 字符串具有该变量,是否会为具有瞬态 属性 的变量赋值?
Does a variable with transient property gets assigned with value if JSON string has that variable?
我不太熟悉序列化,尤其是与瞬态 属性 有关的序列化,所以我想知道如果 JSON正在序列化的字符串包含具有相应值的 keyword/variable。
假设我有一个 JSON:
"json": { "title": "TEST", "date": "2015-07-20" }
我有一个 class:
public class MyClass {
protected String title;
protected transient String date;
}
当我使用 GSON 的 fromJson() 方法时,变量 date 会在 JSON 中接收 date 的值吗?
编辑:只是为了澄清问题,我不打算使用 GsonBuilder,只是使用它的默认设置。我真的很想知道它是如何处理我所说的案例的
不,不会。来自文档
if a field is marked transient, (by default) it is ignored and not
included in the JSON serialization or deserialization.
你可以找到它here
默认情况下它被忽略。来自 docs:
If a field is marked transient, (by default) it is ignored and not
included in the JSON serialization or deserialization.
但是您可以通过构造一个特殊的 Gson
对象来更改该默认行为:
Gson gson = new GsonBuilder()
.excludeFieldsWithModifiers(Modifier.STATIC)
.create();
这将包括瞬态场。
我不太熟悉序列化,尤其是与瞬态 属性 有关的序列化,所以我想知道如果 JSON正在序列化的字符串包含具有相应值的 keyword/variable。
假设我有一个 JSON:
"json": { "title": "TEST", "date": "2015-07-20" }
我有一个 class:
public class MyClass {
protected String title;
protected transient String date;
}
当我使用 GSON 的 fromJson() 方法时,变量 date 会在 JSON 中接收 date 的值吗?
编辑:只是为了澄清问题,我不打算使用 GsonBuilder,只是使用它的默认设置。我真的很想知道它是如何处理我所说的案例的
不,不会。来自文档
if a field is marked transient, (by default) it is ignored and not included in the JSON serialization or deserialization.
你可以找到它here
默认情况下它被忽略。来自 docs:
If a field is marked transient, (by default) it is ignored and not included in the JSON serialization or deserialization.
但是您可以通过构造一个特殊的 Gson
对象来更改该默认行为:
Gson gson = new GsonBuilder()
.excludeFieldsWithModifiers(Modifier.STATIC)
.create();
这将包括瞬态场。