遍历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);            }
        }

    }


   

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值