JSONObject 轉換 JSON複雜物件
阿新 • • 發佈:2019-01-04
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;
}