android json转换成List<Map>优化

来源:互联网 发布:淘宝近视眼镜店 编辑:程序博客网 时间:2024/06/10 15:39
方法一: 
                    代码如下:
                   JSONArray  arrayProductList = new JSONArray(tempJson.getString("vo"));
   //解析 ProductList
  for (int i = 0; i < arrayProductList.length(); i++) {
JSONObject rsProductList = arrayProductList.getJSONObject(i);
Map<String, Object> map = new HashMap<String, Object>();
map.put("borrow_name", rsProductList.getString("borrow_name"));
        listDataTemp.add(map);
   }
                 重要点:
                              这样的方法当解析字段很多的时候,代码量很大,并且每次修改后,代码都要做相应的修改,不利于维护。
            方法2:
                     
 

 public static Map<String, Object> getMap(String jsonString) 

    { 

      JSONObject jsonObject; 

      try 

      { 

       jsonObject = new JSONObject(jsonString);   @SuppressWarnings("unchecked") 

       Iterator<String> keyIter = jsonObject.keys(); 

       String key; 

       Object value; 

       Map<String, Object> valueMap = new HashMap<String, Object>(); 

       while (keyIter.hasNext()) 

       { 

        key = (String) keyIter.next(); 

        value = jsonObject.get(key); 

        valueMap.put(key, value); 

       } 

       return valueMap; 

      } 

      catch (JSONException e) 

      {  

       e.printStackTrace(); 

      } 

      return null; 

    } 

 

    /**

     * 把json 转换为ArrayList 形式

     * @return

     */ 

    public static List<Map<String, Object>> getList(String jsonString) 

    { 

      List<Map<String, Object>> list = null; 

      try 

      { 

       JSONArray jsonArray = new JSONArray(jsonString); 

       JSONObject jsonObject; 

        list = new ArrayList<Map<String, Object>>(); 

       for (int i = 0; i < jsonArray.length(); i++) 

       { 

        jsonObject = jsonArray.getJSONObject(i); 

        list.add(getMap(jsonObject.toString())); 

       } 

      } 

      catch (Exception e) 

      { 

       e.printStackTrace(); 

      } 

      return list; 

    } 

 


主要点:  

    这种解析方式,可以通过获取key列表,然后根据key列表获取值,,,,主要优势就是减少了代码量。即使增加字段,删减字段,都不会影响代码原有功能。

0 0