xuxiuxi
2017-03-20 6db786eadb2c242e0b08e56d47edd08f58e12102
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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);
        }*/
 
    }
}