より簡単なJsonStringデータとMap,List間の変換

2334 ワード

前編ではJSONObjectデータとMap,ArrayList間の変換について述べたが,以下のjarパッケージを導入する必要があり,導入しなくても直接変換できることが分かった.
json-lib-2.4-jdk15.jar ezmorph-1.0.6.jar commons-logging.jar commons-lang.jar commons-collections.jar commons-beanutils.jar
JsonStringデータをMapコレクションに変換
   /**
     *    json      Map   
     * @param jsonString
     * @return
     */ 
    public static Map getMap(String jsonString) 
    { 
      JSONObject jsonObject; 
      try 
      { 
       jsonObject = new JSONObject(jsonString);   @SuppressWarnings("unchecked") 
       Iterator keyIter = jsonObject.keys(); 
       String key; 
       Object value; 
       Map valueMap = new HashMap(); 
       while (keyIter.hasNext()) 
       { 
        key = (String) keyIter.next(); 
        value = jsonObject.get(key); 
        valueMap.put(key, value); 
       } 
       return valueMap; 
      } 
      catch (JSONException e) 
      {  
       e.printStackTrace(); 
      } 
      return null; 
    } 
  • これにより、Map集合の各キー値をMapmap=getMap(entity)とすることができる.for(Map.Entry m:map.entrySet()){ Log.i(TAG,"--------key------:"+ m.getKey() + "value"+m.getValue());

  • JsonStringの配列データをList>データの集合に変換
     /**
         *  json    ArrayList   
         * @return
         */ 
        public static List> getList(String jsonString) 
        { 
          List> list = null; 
          try 
          { 
           JSONArray jsonArray = new JSONArray(jsonString); 
           JSONObject jsonObject; 
            list = new ArrayList>(); 
           for (int i = 0; i < jsonArray.length(); i++) 
           { 
            jsonObject = jsonArray.getJSONObject(i); 
            list.add(getMap(jsonObject.toString())); 
           } 
          } 
          catch (Exception e) 
          { 
           e.printStackTrace(); 
          } 
          return list; 
        } 
    
  • これにより配列中のデータが取得され、一度遍歴すると各キー値が取得されるList>mapList=getList(person);int size = mapList.size(); for (int i = 0; i < size; i++) { Map map1ist = mapList.get(i); for (Map.Entry m : map1ist.entrySet()) { Log.i(TAG,"---key:---list---"+ m.getKey() + "value"+ } }

  • このような方法でJsonStringデータをMapとListに変換する.より簡単であるだけでなく、jarパケットの時代遅れと相互衝突の問題を回避します.