![](/img/trans.png)
[英]Moshi cannot find my custom adapter written in Kotlin for a parameterized type
[英]Moshi generic type adapter
假設有以下參數化數據類表示服務器響應:
public class SocketResponse<T> {
private String responseMessage;
private int responseCode;
private T entity;
}
我在運行時知道T將是什么類型。 moshi是否像Gson一樣支持通用類型適配器? 使用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);
}
Moshi使用Types上的工廠方法來獲取Java類型,與Gson的TypeToken API形成對比。
Type typeA = Types.newParameterizedType(SocketResponse.class, MyResponseA.class);
JsonAdapter<SocketResponse<MyResponseA>> adapter = moshi.adapter(typeA);
然后,使用JsonAdapter反序列化和序列化您的類型,就像Gson的TypeAdapter一樣。
我主要使用GSON,但也許是這樣的?
Type type = Types.newParameterizedType(SocketResponse.class, Object.class);
JsonAdapter<SocketResponse<?>> jsonAdapter = moshi.adapter(type);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.