使用google gson进行json对象序列化/反序列化

我想将java对象序列化/反序列化为json。 谷歌gson是首选。 我有Aclass:

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

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

 {x:1,y:2}。 

不过我想拥有

 {class:“A”,x:1,y:2}

因此,我可以使用reflection对其进行反序列化,而无需在编译时知道类名。 我该怎么办? 谢谢。

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

http://www.yaml.org/

如果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上发布了一些简单的例子。