1

使用 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}}}

我将要序列化的实际类可以是任何东西,所以我不能在序列化程序中硬编码特定属性。但我想用它们的类名包装某些属性。

我怎样才能做到这一点?

4

1 回答 1

0

虽然这不是一个有效的 json 字符串:

{Order:{cust:Customer:{name:joe, age:21}}}

在您的应用程序中,您必须正确建模/实现您的域类,然后才能将其用于序列化/反序列化 json 字符串,换句话说,在调用 toJson/fromJson 方法之前应该知道域类。然而,实际的域类类型可以在运行时动态确定,通过使用 Java Generic Type。

查看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);
于 2012-04-05T11:05:51.123 回答