1. 程式人生 > >複雜的json格式資料轉成Java物件

複雜的json格式資料轉成Java物件

    "payCnt":3,

    "payInfo":[

        {

            "payInfoMain":{

                "itemCnt":1,

                "tranUser":"",

                "payer":"寧德"

            },

            "eBillNo":"2.0120601E+17",

            "payInfoItem":[

                {

                    "chrgName":"初級網路工程師報名費",

                    "msrUint":"元/科",

                    "chrgCode":"KA460001"

                }

            ]

        }

    ]

}

json中嵌套了String、Map、List型別,用JSONObject來轉換:

  Map obj = (Map)JSONObject.fromObject(resultMsg);//resultMsg為json串,轉成Map物件
  System.out.println(obj.get("payCnt"));//獲取payCnt數目
  List list = (List)obj.get("payInfo");//獲取payInfo

資訊(List型別)
  Map t = (Map)list.get(0);//獲取第一行記錄,Map型別
  Map mainMap = (Map)t.get("payInfoMain");//獲取payInfo主要資訊,Map型別
  String user = (String)mainMap.get("payer");//取出payer

注意:1、resultMsg一定是JSON物件,如果是字串則取法完成轉換       2、Map obj = (Map)JSONObject.fromObject(resultMsg);使用的json-lib.jar類庫中的方法 2、若resultMsg是json字串,則借用谷歌公司的Gson的JSONUtil類中的jsonToMap(String jsonstr)方法將字串轉換為Map物件
<1>JSONUtil.java中的將json格式轉換成map物件的原始碼(使用時引入gson.jar類庫) public class JSONUtil{     private static Gson gson=null;     static{         if(gson==null){             gson=new Gson();         }     }     private JSONUtil(){}     /**      * 將json格式轉換成map物件      * @param jsonStr      * @return      */     public static Map<?,?> jsonToMap(String jsonStr){         Map<?,?> objMap=null;         if(gson!=null){             java.lang.reflect.Type type=new com.google.gson.reflect.TypeToken<Map<?,?>>(){}.getType();             objMap=gson.fromJson(jsonStr, type);         }         return objMap;     } } 例如:將json格式轉換成map物件舉例:       Map mapObj = JSONUtil.jsonToMap(response);