【发布时间】:2016-10-25 08:31:31
【问题描述】:
在对 Google 和 Stack Overflow 进行了多次研究后,我还没有找到与我类似的案例。
我需要使用 Gson 库将 Java 对象转换为 Json。事实上,这个对象包含一个自定义泛型类型的字段,如下所示:
SendData.java:
public class SendData {
private SendDataRequestObject<?> sendData;
// Constructor + Getters and Setters
}
这里是 SendDataRequestObject 的类定义:
public class SendDataRequestObject<T> {
private String actionType;
private T parameters;
private CustomClass customClass;
//Constructor + Getters and Setters
}
最后是 MyRequest 的类定义,可以作为 T 参数注入到 SendDataRequestObject 中
public class MyRequest {
private Map<Integer, String> myMap;
private String myString1;
private String myString2;
//Constructor + Getters and Setters
}
实际上,我可以使用 Gson 库解析 SendDataRequestObject,如下所示:
SendDataRequestObject<MyRequest> requestObject = new SendDataRequestObject<MyRequest>();
//...
//Initializing and adding fields to requestObject
//...
Type token = new TypeToken<SendDataRequestObject<MyRequest>>(){}.getType();
System.out.println(new GsonBuilder().create().toJson(requestObject, token));
输出设置正确,每个字段,即使是通用字段,都包含在最终的 json 字符串中:
{"actionType":"verify","parameters":{"myMap":{"15789":"hreher-489hre-gdsf","13057":"rtyuiop-4g8ezg","16741":"gfd456-uiop789"},"myString1":"myStringValue1","myString2":"myStringValue2"},"customClas":{"attr1":"value1","attr2":"value2"}}
但我需要的是解析 SendData 类,而不是 SendDataRequestObject 类。当我尝试将此类转换为 json 字符串时,我得到了这个输出:
{"sendData":{"actionType":"verify","parameters":{},"customClass":{"attr1":"value1","attr2":"value2"}}}
所以,我们可以看到SendDataRequestObject的parameters字段没有转换成Json,可能是因为这是一个泛型类。
如果有人知道怎么做,我将不胜感激!
【问题讨论】: