更為簡單的JsonString資料與Map,List之間的轉換

weixin_33785972發表於2017-02-06

前篇文章有說到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<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; 
    } 
  • 通過這個就可以把Map集合中的各個鍵值拿出來
    Map<String, Object> map = getMap(entity);
    for(Map.Entry<String,Object> m:map.entrySet()){
    Log.i(TAG,"--------key------:" + m.getKey() + " value" +m.getValue());

JsonString的陣列資料轉換成List<Map<String, Object>>資料的集合

 /**
     * 把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; 
    } 
  • 這樣就能拿到陣列中的資料,在遍歷一次就可以拿到各個鍵值了
    List<Map<String, Object>> mapList = getList(person);
    int size = mapList.size();
    for (int i = 0; i < size; i++) {
    Map<String, Object> map1ist = mapList.get(i);
    for (Map.Entry<String, Object> m : map1ist.entrySet()) {
    Log.i(TAG,"---key:---list---" + m.getKey() + " value" +
    }
    }

通過這樣的方法來轉換JsonString資料為Map和List。不僅更為簡單,而且避免了jar包過時和相互衝突的問題。

相關文章