2017-09-13 2 views
2

と仮定は、サーバの応答を表す以下のパラメータ化データクラスを持っています。 GoshはMoshiがジェネリック型アダプターをサポートしているのと同じですか? 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(オブジェクトではありません)の例の質問です。 –

1

モシはGsonのTypeTokenのAPIとは対照的に、Java型を取得するためにTypesのファクトリメソッドを使用しています。

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

次に、GsonのTypeAdapterと同様に、JsonAdapterを使用して型の逆シリアル化とシリアル化を行います。