@Override
public String parse(Response response) {
String result=null;
try {
result=response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
}123456789101112123456789101112
再實現壹個將json轉化為實體類的。這個相對復雜壹點,需要將實體類的Class對象傳入,因為我們使用的是gson,進行轉換的時候需要該參數。當然這個應該是對所有實體類通用的,很顯然的用到了泛型。
public class GsonParser<T> implements Parser<T> {
private Class<T> mClass=null;
public GsonParser(Class<T> clazz){
if (clazz==null){
throw new IllegalArgumentException("Class can't be null");
}
this.mClass=clazz;
}
@Override
public T parse(Response response) {
try {
Gson gson=new Gson();
String str=response.body().string();
T t=gson.fromJson(str,mClass);
return t;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
1234567891011121314151617181920212212345678910111213141516171819202122
要在UI層進行更新UI,其實很簡單,解析完成後發生壹個消息就好了,那麽要怎麽做呢。
首先實現Callback接口
public class Callback<T> implements com.squareup.okhttp.Callback {
private Parser<T> mParser;
public Callback(Parser<T> mParser) {
if (mParser == null) {
throw new IllegalArgumentException("Parser can't be null");
}
this.mParser = mParser;
}
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
}
}
12345678910111213141516171819202122231234567891011121314151617181920212223
通過構造函數將我們的Parser傳遞了進去。