2017-09-13 17 views
2

한다고 가정은 서버 응답을 나타내는 다음과 같은 매개 변수화 된 데이터 클래스가 있습니다. Gosh는 moshi가 generic type adapter를 지원합니까? Gson id를 사용하여 이것을 분석하려면 다음을 수행하십시오.모시 제네릭 형식 어댑터

Type typeA = new TypeToken<SocketResponse<MyResponseA>>(){}.getType(); 
SocketResponse<MyResponseA> responseA = getResponse("json", typeA); 

Type typeB = new TypeToken<SocketResponse<MyResponseB>>(){}.getType(); 
SocketResponse<MyResponseB> responseB = getResponse("json", typeB); 


private String getResponse(Type t){ 
    return gson.fromJson(response, type); 
} 

답변

0

저는 주로 GSON을 사용하지만 그와 비슷한 것일 수 있습니까?

Type type = Types.newParameterizedType(SocketResponse.class, Object.class); 
JsonAdapter<SocketResponse<?>> jsonAdapter = moshi.adapter(type); 
+0

거의 같지만 예제 질문에서 매개 변수는 MyResponseA 또는 MyResponseB (Object 아님)입니다. –

1

는 모시는 GSON의 TypeToken의 API와 달리 Java의 형태를 얻을 수 Types의 팩토리 메소드를 사용합니다.

Type typeA = Types.newParameterizedType(SocketResponse.class, MyResponseA.class); 
JsonAdapter<SocketResponse<MyResponseA>> adapter = moshi.adapter(typeA); 

그런 다음, 단지 GSON의 TypeAdapter 같이, 역 직렬화하고 형식을 직렬화 할 JsonAdapter를 사용합니다.