繁体   English   中英

使用Google Gson的JSON对象序列化/反序列化

[英]json object serialization/deserialization using google gson

我想将Java对象从json序列化/反序列化。 谷歌gson是可取的。 让我参加A班:

class A {
  int x = 1;
  int y = 2; 
}

然后,如果我调用new Gson()。toJson(new A()),我将得到以下信息:

{ x: 1, y : 2}.

但是我想要

{class : "A", x:1, y:2}

因此,我可以使用反射来反序列化它,而无需在编译时知道类名。 我该怎么办? 谢谢。

您的第二个示例不是JSON。 如果您想要维护实例状态和特定类等的东西,请查看YAML

http://www.yaml.org/

如果最好使用Gson或要求使用Gson,则特定于如何从结构class A {int x = 1; int y = 2;}的Java实例中生成结构{class:"A", x:1, y:2} JSON的问题class A {int x = 1; int y = 2;} class A {int x = 1; int y = 2;} ,目前有必要实现自定义序列化。 同样,要从此JSON反序列化为此Java结构,则必须实现自定义反序列化。

请注意,Gson很快将提供RuntimeTypeAdapter来进行更简单的多态反序列化,而不是进行这种“手动”处理。 有关更多信息,请参见http://code.google.com/p/google-gson/issues/detail?id=231 即使您不能使用RuntimeTypeAdapter ,它也至少提供了一个用于创建可配置的自定义反序列化器的示例。

如果您可以切换JSON映射API,则建议您考虑Jackson ,因为它具有可用的且相对简单的多态解串器机制。 我在http://programmerbruce.blogspot.com/2011/05/deserialize-json-with-jackson-into.html上发布了一些简单的示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM