0
点赞
收藏
分享

微信扫一扫

JSON解析后按照层级结构放入Map

ITWYY 2021-10-15 阅读 60
JAVA

需求:
json解析后按照层级关系把键值放入map,可以用 user.role.name的形式来取得相应的值
支持数组和多层级的关系

public static void analysisJson(Object obj, Map<String, Object> values, String prefix) {
        if (obj == null || values == null) {
            return;
        }
        
        if(prefix == null){
            prefix = "";
        }

        
        if (obj instanceof JSONArray) {
            JSONArray objArray = (JSONArray) obj;
            for (int i = 0; i < objArray.size(); i++) {
                StringBuilder currentPrefix = new StringBuilder(prefix);
                currentPrefix.append("[").append(i).append("].");
                analysisJson(objArray.get(i), values, currentPrefix.toString());
            }
        } else if (obj instanceof JSONObject) {// 如果为json对象
            JSONObject jsonObject = (JSONObject) obj;
            Iterator it = jsonObject.keySet().iterator();
            while (it.hasNext()) {
                String key = it.next().toString();
                Object object = jsonObject.get(key);
                
                
                // 如果得到的是数组
                if (object instanceof JSONArray) {
                    JSONArray objArray = (JSONArray) object;
                    analysisJson(objArray, values, key);
                }
                // 如果key中是一个json对象
                else if (object instanceof JSONObject) {
                    StringBuilder currentPrefix = new StringBuilder();
                    if (prefix != null && prefix.length() > 0) {
                        currentPrefix.append(prefix).append(".").append(key);
                    } else {
                        currentPrefix.append(key);
                    }
                    currentPrefix.append(".");
                    analysisJson((JSONObject) object, values, prefix);
                }
                // 如果key中是其他
                else {
                    values.put(prefix + key, object);
                }
            }
        }
    }
举报

相关推荐

0 条评论