[英]GSON deserializing generic type
我有以下课程,基本上是从网络服务获得的响应。
public class WSGenericMessage<T> implements Serializable {
private static final long serialVersionUID = 1L;
private Boolean ResponseCode;
private String ResponseMessage;
private Class<T> ResponseData;
public Boolean getResponseCode() {
return ResponseCode;
}
public void setResponseCode(Boolean responseCode) {
ResponseCode = responseCode;
}
public String getResponseMessage() {
return ResponseMessage;
}
public void setResponseMessage(String responseMessage) {
ResponseMessage = responseMessage;
}
public Class<T> getResponseData() {
return ResponseData;
}
public void setResponseData(Class<T> responseData) {
ResponseData = responseData;
}
}
是否可以通过以下方式反序列化json字符串:
Gson gson = new Gson();
Type type = new TypeToken<WSGenericMessage<String>>(){}.getType();
gson.fromJson(result, type);
我正进入(状态:
java.lang.UnsupportedOperationException: Attempted to deserialize a java.lang.Class. Forgot to register a type adapter?
有一些类似类型擦除的东西,因此泛型类型被擦除并且在运行时不可用。
因此,您可以在没有泛型分类器的情况下反序列化给定对象的类,而不是“投射”到适当的类型。
但是您的问题不是泛型类型反序列化,而是包含java.lang.Class
对象的类型。 这不能序列化和反序列化。
对于序列化和反序列化,应使用不带Class字段的对象,使用带类名的String字段,或将此字段标记为transient
字段,然后再将其还原。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.