美文网首页
JSON解析后按照层级结构放入Map

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

作者: 和平菌 | 来源:发表于2019-06-21 17:51 被阅读0次

需求:
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);
                }
            }
        }
    }

相关文章

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

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

  • go day09 json

    通过结构体生成json struct_tag的使用 通过map生成json json解析到结构体 json解析到map

  • 第05天(异常、文本文件处理)_03

    11_通过结构体生成json.go 12_通过map生成json.go 13_json解析到结构体.go 14_j...

  • Gson解析,利用TypeToken

    一、不写bean类,直接解析为Map利用键值对来取值。 如果json很复杂,层级很多,使用创建bean类的方式要写...

  • JSON的介绍

    一、什么是JSON JSON是一种嵌套层级结构,具有自我描述性,可以通过JavaScript进行解析,也通常会通过...

  • JSONObject、JSONArray与集合Map、数组、对象

    将json语句转换解析为Map集合 将map集合转换为json语句表示 将数组转换为JSON 对象转换成JSON ...

  • golang的json解析汇总

    解析一个比较异常的json,json中的key包含变量 解析如下,主要为需要将包含变量的key,解析为一个map[...

  • JavaScript数据处理

    后—>前 Map类型的Json数据 Map接口

  • golang之Json

    1. json字符串解析: json.Unmarshal(b, &f) json字符串解析到结构体中: 输出结果...

  • url拼接参数操作

    url拼接参数替换对应的值 url解析拼接参数为Map 解析Url拼接参数放入到Intent中

网友评论

      本文标题:JSON解析后按照层级结构放入Map

      本文链接:https://www.haomeiwen.com/subject/liyuqctx.html