JSONObject 转换 JSON复杂对象

来源:互联网 发布:人工智能语音机器人 编辑:程序博客网 时间:2024/05/22 15:16

转载:JSONObject 转换 JSON复杂对象
Bean定义:

public class GetM100DataResponse {    private String service;//接口代码    private String sessionId;//会话Id    private String errorCode;//错误码    private String errorMsg;//错误消息    private String summary;//摘要    private List<M100DataObject> dataPoints;    //数据列表    //get set  略}
public class M100DataObject {    private String dataType;    //数据类型    String    private String sendDateTime;    //发送时间    String    private M100DataObjectKV dataKV;    //数值对象    Object    private String serviceNo;    //用户服务号    String    private Integer userSeq;    //用户序号    Integer    private String eqmtNo;    //设备号    String        //get set  略}

JSON字符串:

{    "dataPoints":[        {            "dataKV":{                "pulse":"103",                "measurementTime":"2015-12-02 12:06:32",                "low":"91",                "high":"126",                "id":"d750fed2-0c95-4722-92ac-3078fa34390b"            },            "dataType":"1",            "eqmtNo":"",            "sendDateTime":"2015-12-02 12:06:33",            "serviceNo":"5716b0badb4b426cbfaaebb1be7d57b3",            "userSeq":"1"        }    ],    "diagResult":"",    "errorCode":"1",    "errorMsg":"成功!",    "propose":"",    "service":"GET_M100_DATA",    "sessionId":"1",    "summary":""}

转换代码如下:

public static JsonConfig getDecodeJSONConfig(){    JsonConfig jsonConfig = new JsonConfig();    jsonConfig.registerJsonValueProcessor(String.class, new JsonValueProcessor() {            public Object processArrayValue(Object value,                    JsonConfig arg1) {                // TODO Auto-generated method stub                return process(value);            }            public Object processObjectValue(String key,                    Object value, JsonConfig arg2) {                // TODO Auto-generated method stub                                return process(value);               }            public Object process(Object value) {                try {                    if (value instanceof String) {                        return  URLDecoder.decode(value.toString(),"UTF-8");                                                }                    return value == null ? "" : value.toString();                } catch (Exception e) {                    return "";                }            }        }    );    return jsonConfig;}public GetM100DataResponse parseData(String resData){//resData为JSON字符串    JsonConfig jsonConfig = getDecodeJSONConfig();    JSONObject json = JSONObject.fromObject(resData, jsonConfig);    /*      * 在JSONObject.toBean的时候,如果转换的类中有集合,     * 可以先定义:Map<String, Class> classMap = new HashMap<String, Class>();     * 然后在classMap中put你要转换的类中的集合名,如:     */          Map<String, Class> classMap = new HashMap<String, Class>();    classMap.put("dataPoints", M100DataObject.class);//dataPoints 为 属性名称    /*     * 然后在toBean()的时候把参数加上, 如:     */            GetM100DataResponse response = (GetM100DataResponse)JSONObject.toBean(json, GetM100DataResponse.class, classMap);    return response;}