簡體   English   中英

Moshi通用型適配器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM