1. 程式人生 > >JSONObject 轉換 JSON複雜物件

JSONObject 轉換 JSON複雜物件

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;
}