gson 在自定义反序列化器中调用标准反序列化
是否可以在 gson 中编写一个 json 反序列化器,首先调用默认行为,然后我可以对我的对象进行一些后处理。例如:
public class FooDeserializer implements JsonDeserializer<Foo> {
public Foo deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
Foo foo = context.deserialize(json, typeOfT);//Standard deserialization call?????
foo.doSomething();
return foo();
}
}
我正在使用 gson 1.3(我不能使用任何其他版本,因为我只能使用企业中的版本 存储库)
谢谢
Is it possible to write a json deserializer in gson that invokes the default behaviour first and then i can do some post processing on my object. For example:
public class FooDeserializer implements JsonDeserializer<Foo> {
public Foo deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
Foo foo = context.deserialize(json, typeOfT);//Standard deserialization call?????
foo.doSomething();
return foo();
}
}
I am using gson 1.3 (I cannot use any other version as i can only use the versions in the corporate
repository)
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以通过为要反序列化的对象(例如 CustomClass.class)实现自定义 TypeAdapterFactory 来实现此目的,如下所示。
然后用Gson将其注册为
You can do that by implementing custom TypeAdapterFactory for your object (say CustomClass.class) to be deserialized as below.
And then registering it with Gson as
查看 http://gsonfire.io
这是我制作的一个库,它扩展了 Gson 来处理 Post-serialization 和 Post-serialization 等情况。反序列化
此外,它还有许多其他很酷的功能,这些功能是我随着时间的推移使用 Gson 所需要的。
Check out http://gsonfire.io
It's a library I made that extends Gson to handle cases like Post-serialization and Post-deserialization
Also it has many other cool features that I've needed over time with Gson.
以下是基于 @user1556622 提供的不完整答案以及 code.google.com/p/google 中的讨论的完整实现-gson/issues/detail?id=43。
因此,我们可以序列化抽象
Field
对象列表,并顺利地反序列化它,独立于特定Field
的具体实现及其层次结构深度。工厂注册:
Here's full implementation based on incomplete answer provided by @user1556622 and discussion in code.google.com/p/google-gson/issues/detail?id=43.
As a result we can serialize list of abstract
Field
objects and smoothly deserialize it independent on concrete implementation of specificField
and its hierarchy depth.Registration of factory: