package cn.com.basic.face.discern.common;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
|
import org.xutils.http.app.ResponseParser;
|
import org.xutils.http.request.UriRequest;
|
|
import java.lang.reflect.Type;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import cn.com.basic.face.discern.common.ResultBean;
|
|
/**
|
* Created by wyouflf on 15/11/5.
|
*/
|
public class JsonResponseParser implements ResponseParser {// 如果实现 InputStreamResponseParser, 可实现自定义流数据转换.
|
|
@Override
|
public void checkResponse(UriRequest request) throws Throwable {
|
// custom check ?
|
// get headers ?
|
}
|
|
/**
|
* 转换result为resultType类型的对象
|
*
|
* @param resultType 返回值类型(可能带有泛型信息)
|
* @param resultClass 返回值类型
|
* @param result 字符串数据
|
* @return
|
* @throws Throwable
|
*/
|
@Override
|
public Object parse(Type resultType, Class<?> resultClass, String result) throws Throwable {
|
|
ResultBean resultBean = JSON.parseObject(result, ResultBean.class);
|
Object data = resultBean.getData();
|
if (data != null) {
|
if (data instanceof JSONObject) {
|
JSONObject jsonObj = (JSONObject) data;
|
//Object itemObj = JSON.parseObject(jsonObj.toJSONString(), itemClass);
|
//resultBean.setData(itemObj);
|
} else if (data instanceof JSONArray) {
|
JSONArray jsonArray = (JSONArray) data;
|
//List itemList = JSON.parseArray(jsonArray.toJSONString(), itemClass);
|
//resultBean.setData(itemList);
|
}
|
}
|
|
return resultBean;
|
|
|
|
// TODO: json to java bean
|
/*if (resultClass == List.class) {
|
// 这里只是个示例, 不做json转换.
|
List<BaiduResponse> list = new ArrayList<BaiduResponse>();
|
BaiduResponse baiduResponse = new BaiduResponse();
|
baiduResponse.setTest(result);
|
list.add(baiduResponse);
|
return list;
|
// fastJson 解析:
|
// return JSON.parseArray(result, (Class<?>) ParameterizedTypeUtil.getParameterizedType(resultType, List.class, 0));
|
} else {
|
// 这里只是个示例, 不做json转换.
|
BaiduResponse baiduResponse = new BaiduResponse();
|
baiduResponse.setTest(result);
|
return baiduResponse;
|
// fastjson 解析:
|
// return JSON.parseObject(result, resultClass);
|
}*/
|
|
}
|
}
|