我想将java对象序列化/反序列化到json。谷歌 gson 更可取。让我有A类:
A类{ 诠释 x = 1; 整数 y = 2; }
然后,如果我调用 new Gson().toJson(new A()) 我将得到以下信息:
{ x:1,y:2}。
但是我想拥有
{类:“A”,x:1,y:2}
所以我可以在编译时不知道类名的情况下使用反射反序列化它。我该怎么做?谢谢你。
您的第二个示例不是 JSON。如果您想要维护实例状态和特定类等的东西,请查看 YAML
如果更可取或需要使用 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上发布了一些简单的示例。