0

我想将java对象序列化/反序列化到json。谷歌 gson 更可取。让我有A类:

A类{
  诠释 x = 1;
  整数 y = 2;
}

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

{ x:1,y:2}。 

但是我想拥有

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

所以我可以在编译时不知道类名的情况下使用反射反序列化它。我该怎么做?谢谢你。

4

2 回答 2

0

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

http://www.yaml.org/

于 2010-12-25T01:27:14.683 回答
0

如果更可取或需要使用 Gson,那么具体到如何{class:"A", x:1, y:2}从结构的 Java 实例生成结构的 JSON 的问题,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上发布了一些简单的示例。

于 2011-06-15T20:44:03.263 回答