如何在使用GSON将对象模型序列化为JSON时包装某些值?例如型号:使用Gson序列化JSON时包装某些值
class Order {
Customer cust;
}
class Customer {
String name;
int age;
}
序列化的客户通常会产生这样的:
{cust:{name:joe, age:21}}
我想这样做是与类名的附加元素包裹的订单和客户价值。因此,预期的JSON是:
{Order:{cust:Customer:{name:joe, age:21}}}
实际的类,我将序列化可以是任何东西,所以我不能硬编码到串行特定属性。但我会想用他们的类名称来包装某些属性。
我该怎么做?
你*绝对*需要包装部分,还是可以通过向模型对象添加“clazz”字段来实现类似的功能? – Raffaele 2012-04-05 08:26:02
我不拥有我将序列化和反序列化的对象,所以我不能添加任何东西给他们。 – Josh 2012-04-05 15:27:52
当然,但在序列化时,您可以添加一个持有完全限定类名称的'clazz'字段,因此,在反序列化时,您可以读取'clazz'并使用'Class.forName'取回Java类型。您只需要为根元素执行此操作,因为您可以使用标准的Gson例程。我深入研究了Gson API和源代码,看起来你正在寻找的*装饰*是不可能的(至少我没有找到一个简单的方法而不修改源代码)。当然,还有其他的库,你可以尝试指定为什么响应类型是未知的。 – Raffaele 2012-04-05 20:04:39