내 GSON 문제는 내 반환 형식이 매개 변수화 된 개체가 아니라는 사실에 관한 것임을 알았습니다. 이제 Gson.fromJson 메서드를 매개 변수 형식과 함께 사용하여 반환 형식을 지정해야 GSON이이를 처리합니다."클래스"형식의 매개 변수화 된 형식을 만듭니다.
public class RestResponse<T> {
private String errorMessage;
private int errorReason;
private T result;
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "RestResponse [errorMessage=" + errorMessage + ", result=" + result + "]";
}
/**
* Does this response contain an error?
* @return true if in error
*/
public boolean isInError(){
return getErrorMessage()!=null;
}
/**
* @return the errorMessage
*/
public String getErrorMessage() {
return errorMessage;
}
/**
* @param errorMessage the errorMessage to set
*/
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
/**
* The error reason code
* @return the errorReason
*/
public int getErrorReason() {
return errorReason;
}
/**
* The error reason code
* @param errorReason the errorReason to set
*/
public void setErrorReason(int errorReason) {
this.errorReason = errorReason;
}
/**
* The result of the method call
* @return the result or null if nothing was returned
*/
public final T getResult() {
return result;
}
/**
* The result of the method call
* @param result the result to set or null if nothing was returned
*/
public final void setResult(T result) {
this.result = result;
}
}
가 지금은 다른 쪽의 결과 유형을 만들려면 :
나는 그런 제네릭 클래스라는 RestResponse을 만들었습니다. 이러한 것들을 디코딩하고 예외를 던지거나 결과를 반환하는 데 사용하는 제네릭 메서드가 있습니다.
그래서 내 방법은 다음과 같이이다 :
clazz에이 RestResponse에 지정됩니다 유형이다public Object submitUrl(String url, Class<?> clazz) throws AjApiException {
.
그때 GSON에 전달하기 전에 RestResponse을 만들로 이동합니다
Type typeOfT = new TypeToken<RestResponse<clazz>>(){}.getType(); //1-->What goes here?
RestResponse<clazz> restResponse; //2-->and here?
그리고 오류를. 누군가가 clazz 대신이 장소에 무엇이 들어 있는지 말해 줄 수 있습니까?
구현 방법에 대한 자세한 정보를 제공해 주시겠습니까? 감사! –
@BenoitDuffez 도움이 될 것이라고 생각되는 코드를 추가했습니다. 잠시 지났으므로 문법이 확실하지 않습니다. 유용하다면 upvote하십시오. – Thom
감사합니다. 그것은 내가 원하는 해결책이 아니지만 여전히 누군가에게 유용 할 수 있습니다.또한 ''은 유형 삭제 때문에 유용하지 않습니다. Gson에게 제네릭을 기술하는 방법을 발견 한 유일한 방법은'ParameterizedType'을 이용하는 것입니다. http://stackoverflow.com/a/14139700/334493을 참조하십시오. –