使用Gson对generics类型进行Java反序列化

我正在尝试反序列化一些generics类型。 它工作得很好,但我想把这段代码换成一个方法。

Type listType = new TypeToken<TestResult>(){}.getType(); TestResult result = new Gson().fromJson(json, listType); 

如何做到这一点,certificate有关类型的信息?

你不能。 在运行时期间无法确定generics的类型。

一个简单的解决方法是向MyObject添加一个方法以返回结果类型(如代码示例的第一行)。

是的你可以。 有一个解决方法。 您只需要将“MyObject”的类型和类显式传递给方法。

在您的情况下,开发具有以下签名和正文的方法。

 public  Object getGenericDataObjectFromJson(String json, Type t, Class type) { // Convert Json String to Java object TestResult obj = gson.fromJson(json, t); return obj; } 

哪里

  1. String json =你的json字符串
  2. 输入listType =作为参数传递的listType对象
  3. 类类型= MyObject.class

方法调用会变成这样

 GsonUtility gs = new GsonUtility();// Your gson utility class JSONObject jsonObj = "your json string"; // Explicitly identifying the type so as to pass it to the method // Because The type of a generics can't be determinted during runtime as #CKuk said Type objectType = new TypeToken>(){}.getType(); TestResult resultObject= (TestResult) gs.getGenericDataObjectFromJson(jsonObj.toString(), objectType, MyObject.class);