遍歷JSON字符串轉爲HashMap

二話不說貼代碼,需要的jar包見附件

    
     public interface JsonParseCallback {
        public void onKeyValueGet(String key, Object value);
     }

      /**
     * 根據JSON字符串,以key標記原JSON層次結構,得到單層的HashMap
     * 
     * @param jsonString
     * @param preKey
     * @return
     */
    private void jsonToMap(Object jsonString, String preKey, JsonParseCallback mJsonParseCallback ) {

        JSONObject jsonObj = null;
        boolean isJsonObj = true;
        try {
            jsonObj = JSONObject.fromObject(jsonString);
        } catch (Exception e) {
            if (e instanceof ClassCastException) {
                isJsonObj = false;
            }
        }

        if (isJsonObj && jsonObj != null) {

            Iterator<?> jsonIt = jsonObj.keys();
            while (jsonIt.hasNext()) {
                String originKey = (String) jsonIt.next();
                String prefix = preKey.isEmpty() ? "" : preKey + "/";
                String key = prefix + originKey;
                Object tmpJsonObj = jsonObj.get(originKey);

                try {
                    if (tmpJsonObj instanceof JSONObject) {
                        jsonToMap(tmpJsonObj.toString(), key, mJsonParseCallback);
                    }
                    else if (tmpJsonObj instanceof JSONArray) {

                        for (int i = 0; i < ((JSONArray) tmpJsonObj).size(); i++) {
                            Object obj = ((JSONArray) tmpJsonObj).get(i);
                            jsonToMap(obj.toString(), key, mJsonParseCallback);
                        }
                    }
                    else {                        
                                         mJsonParseCallback.onKeyValueGet(key, tmpJsonObj);
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

        }
        else {
            JSONArray jsonArray = null;
            boolean isJsonArray = true;
            try {
                jsonArray = JSONArray.fromObject(jsonString);
            } catch (Exception e) {
                if (e instanceof ClassCastException) {
                    isJsonArray = false;
                }
            }
            
            if (isJsonArray && jsonArray != null) {
                
                for (int i = 0; i < jsonArray.size(); i++) {
                    Object obj = jsonArray.get(i);
                    jsonToMap(obj.toString(), preKey, mJsonParseCallback);
                }
            }
            else {               
                       mJsonParseCallback.onKeyValueGet(preKey, jsonString);            }
        }

    }



  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章