У меня есть следующий класс, который в основном является ответом от веб-службы.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?
«Это не может быть сериализовано и десериализовано» - Почему бы и нет? 'Class' реализует' Serializable'. Просьба уточнить ваш ответ. –
GSON не может справиться с этим. –
Правильно, и я могу догадаться, почему. Я просто прошу вас прояснить причину, кроме только «стирания типа» для OP. Было бы неплохо понять сообщение об исключении. –