【发布时间】:2014-04-04 19:28:20
【问题描述】:
在手册there is a sample 中,仅包含原始大小写。
如果我的情况不是原始的怎么办?
假设我有一个类,它在默认序列化方面存在问题(在我的情况下它是无限递归)。
类包含多个字段,其中一些是“主要”字段并保存信息,而另一些是服务字段。
所以我只需要序列化“主要”字段并从中派生服务字段。
class MyType1 {
MyType2 a; // "main" field
MyType3 b; // service fiels
}
class MySerializer implements JsonSerializer<MyType1> {
@Override
public JsonElement serialize(MyType1 arg0, Type arg1, JsonSerializationContext arg2) {
JsonObject ans = new JsonObject();
// ans.add("a", ... // what to write here? How to wrap a into JsonElement?
return ans;
}
}
我知道我可以在这种特定情况下使用 transient 关键字。但问题是关于编写序列化程序。
更新
我强调使用瞬态不是一个答案。我的问题是关于自定义序列化程序。怎么写?
【问题讨论】:
-
不清楚你在这里问什么。如果您不想在序列化程序中序列化某些字段,您只需......不会将它们添加到您返回的 JsonElement 中。
-
如何只将
a添加到JsonElement?知道JsonElement是抽象类,怎么加东西?
标签: java json serialization gson jsonserializer