JSONObject 转换 JSON复杂对象

Bean定义:

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

 

JSON字符串:

 1 {
 2     "dataPoints":[
 3         {
 4             "dataKV":{
 5                 "pulse":"103",
 6                 "measurementTime":"2015-12-02 12:06:32",
 7                 "low":"91",
 8                 "high":"126",
 9                 "id":"d750fed2-0c95-4722-92ac-3078fa34390b"
10             },
11             "dataType":"1",
12             "eqmtNo":"",
13             "sendDateTime":"2015-12-02 12:06:33",
14             "serviceNo":"5716b0badb4b426cbfaaebb1be7d57b3",
15             "userSeq":"1"
16         }
17     ],
18     "diagResult":"",
19     "errorCode":"1",
20     "errorMsg":"成功!",
21     "propose":"",
22     "service":"GET_M100_DATA",
23     "sessionId":"1",
24     "summary":""
25 }

转换代码如下:

 1 public static JsonConfig getDecodeJSONConfig(){
 2     JsonConfig jsonConfig = new JsonConfig();
 3     jsonConfig.registerJsonValueProcessor(String.class, new JsonValueProcessor() {
 4             public Object processArrayValue(Object value,
 5                     JsonConfig arg1) {
 6                 // TODO Auto-generated method stub
 7                 return process(value);
 8             }
 9 
10             public Object processObjectValue(String key,
11                     Object value, JsonConfig arg2) {
12                 // TODO Auto-generated method stub                
13                 return process(value);   
14             }
15 
16             public Object process(Object value) {
17                 try {
18                     if (value instanceof String) {
19                         return  URLDecoder.decode(value.toString(),"UTF-8");                            
20                     }
21                     return value == null ? "" : value.toString();
22                 } catch (Exception e) {
23                     return "";
24                 }
25             }
26         }
27     );
28     return jsonConfig;
29 }
30 public GetM100DataResponse parseData(String resData){//resData为JSON字符串
31     JsonConfig jsonConfig = getDecodeJSONConfig();
32     JSONObject json = JSONObject.fromObject(resData, jsonConfig);
33     /* 
34      * 在JSONObject.toBean的时候,如果转换的类中有集合,
35      * 可以先定义:Map<String, Class> classMap = new HashMap<String, Class>();
36      * 然后在classMap中put你要转换的类中的集合名,如:
37      */      
38     Map<String, Class> classMap = new HashMap<String, Class>();
39     classMap.put("dataPoints", M100DataObject.class);//dataPoints 为 属性名称
40     /*
41      * 然后在toBean()的时候把参数加上, 如:
42      */        
43     GetM100DataResponse response = (GetM100DataResponse)JSONObject.toBean(json, GetM100DataResponse.class, classMap);
44     return response;
45 }

over

 

posted @ 2015-12-02 15:48  gzl  阅读(6115)  评论(0编辑  收藏  举报