JSON - 使用Gson反序列化动态对象

Red*_*gle 7 java json gson

让我们假设我有一个类型的Java类:

public class MyClass
{
   public String par1;
   public Object par2;
}
Run Code Online (Sandbox Code Playgroud)

然后我有这个:

String json = "{"par1":"val1","par2":{"subpar1":"subval1"}}";

Gson gson = new GsonBuilder.create();
MyClass mClass = gson.fromJson(json, MyClass.class);
Run Code Online (Sandbox Code Playgroud)

par2JSON是从其他应用程序给我,我永远不知道什么是它的参数名称,因为它们是动态的.

我的问题是,par2MyClass上应该设置哪个Class类型变量,以便将JSON String变量正确反序列化为我的类对象?

谢谢

yor*_*rkw 7

查看GSON用户指南中的序列化和反序列化通用类型:

public class MyClass<T>
{
   public String par1;
   public T par2;
}
Run Code Online (Sandbox Code Playgroud)

要反序列化它:

Type fooType = new TypeToken<Myclass<Foo>>() {}.getType();
gson.fromJson(json, fooType);
Run Code Online (Sandbox Code Playgroud)

希望这有帮助.

  • 我不认为这有助于OP.在执行反序列化之前,他不知道对象将是什么类型. (3认同)