package com.lzy.ninegridview.callback;
import android.text.TextUtils;
import com.google.gson.Gson;
import com.lzy.okhttputils.callback.AbsCallback;
import org.json.JSONObject;
import java.lang.reflect.Type;
import okhttp3.Response;
/**
* ================================================
* 作 者:廖子尧
* 版 本:1.0
* 创建日期:2016/1/14
* 描 述:默认将返回的数据解析成需要的Bean,可以是 BaseBean,String,List,Map
* 修订历史:
* ================================================
*/
public abstract class JsonCallback<T> extends AbsCallback<T> {
private Class<T> clazz;
private Type type;
public JsonCallback(Class<T> clazz) {
this.clazz = clazz;
}
public JsonCallback(Type type) {
this.type = type;
}
@Override
public T parseNetworkResponse(Response response) {
try {
String responseData = response.body().string();
if (TextUtils.isEmpty(responseData)) return null;
JSONObject jsonObject = new JSONObject(responseData);
String data = jsonObject.optString("data", "");
if (clazz == String.class) return (T) data;
if (clazz != null) return new Gson().fromJson(data, clazz);
if (type != null) return new Gson().fromJson(data, type);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}