使用 GSON 将对象模型序列化为 JSON 时如何包装某些值?模型示例:
class Order {
Customer cust;
}
class Customer {
String name;
int age;
}
序列化客户通常会产生如下结果:
{cust:{name:joe, age:21}}
我想要做的是将 Order 和 Customer 值包装在带有类名的附加元素中。所以预期的 JSON 是:
{Order:{cust:Customer:{name:joe, age:21}}}
我要序列化的实际类可以是任何内容,因此我无法在序列化器中对特定属性进行硬编码。但我想用它们的类名来包装某些属性。
我该怎么做?
最佳答案
但这不是一个有效的 json 字符串:
{Order:{cust:Customer:{name:joe, age:21}}}
在您的应用程序中,您必须正确建模/实现您的域类,然后才能将其用于序列化/反序列化 json 字符串,换句话说,在调用 toJson/fromJson 方法之前应该知道域类。然而,通过使用 Java 通用类型,可以在运行时动态确定实际的域类类型。
查看Serializing and Deserializing Generic Types部分来自 Gson 用户指南:
public class Foo<T> {
public T value;
}
序列化它:
Gson gson = new Gson();
Type fooType = new TypeToken<Foo<Bar>>() {}.getType();
gson.toJson(foo, fooType);
反序列化它:
Gson gson = new Gson();
Type fooType = new TypeToken<Foo<Bar>>() {}.getType();
gson.fromJson(json, fooType);
关于java - 使用 Gson 序列化 JSON 时包裹某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10022420/