栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java解析JSON---JSON循环嵌套找key,找到后替换原有key

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java解析JSON---JSON循环嵌套找key,找到后替换原有key

思路:

思路是写一个递归函数

1. 先找key,

2. 找不到的话去value里面找。value里面分三种情况,

  • 1.value是json类型就继续找
  • 2.如果是数组,就遍历之后递归
  • 3,如果是普通类型就continue

代码部分:
    public static String analyseJson(String jsonData, String oldKey, String newKey) {
        JSONObject res = new JSONObject();
        JSONObject jsonObject = JSON.parseObject(jsonData);
        //1. 首先在jsonObject里面找得到key,则直接替换;
        if (jsonObject.containsKey(oldKey)) {
            if (!StringUtils.isEmpty(newKey)) {
                res.put(newKey, jsonObject.get(oldKey));
            }
            return JSON.toJSONString(res);
        }else {
            // 2. 解析value;分三种类型。
            for (Map.Entry entry : jsonObject.entrySet()) {
                Object value = entry.getValue();
                //if:如果value是json类型继续递归解析; else if数组; else基本类型,则continue;
                if (value instanceof JSONObject) {
                    return analyseJson(String.valueOf(value), oldKey, newKey);
                } else if (value instanceof JSONArray) {
                    JSONArray objArray = (JSONArray)value;
                    for (int i = 0; i < objArray.size(); i++) {
                        return analyseJson(String.valueOf(objArray.get(i)),oldKey,newKey);
                    }
                } else {
                    continue;
                }
            }
            return res.toJSONString();
        }
    }
测试:
public static void main(String[] args) {
        String test = "{n" +
                "                    "key_as_string": "2022-06-24T08:00:00.000+08:00",n" +
                "                    "key": 1656028800000,n" +
                "                    "doc_count": 13486,n" +
                "                    "avgValue": {n" +
                "                        "value1": 81.9979979237728n" +
                "                    },n" +
                "                    "lastValue": {n" +
                "                        "value2": 19n" +
                "                    }n" +
                "                }n";
        System.out.println("解析前:"+test);

        String s = analyseJson(test, "value1", "ycccc");
        System.out.println("解析后:"+s);
    }

 测试二
String test2 = "{n" +
                "    "error": 0,n" +
                "    "status": "success",n" +
                "    "results": [n" +
                "        {n" +
                "            "currentCity": "青岛",n" +
                "            "index": [n" +
                "                {n" +
                "                    "title": "穿衣",n" +
                "                    "zs": "较冷",n" +
                "                    "tipt": "穿衣指数",n" +
                "                    "des": "建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。"n" +
                "                },n" +
                "                {n" +
                "                    "title": "紫外线强度",n" +
                "                    "zs": "中等",n" +
                "                    "tipt": "紫外线强度指数",n" +
                "                    "des": "属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。"n" +
                "                }n" +
                "            ]n" +
                "        }n" +
                "    ]n" +
                "}";
        System.out.println("解析前:"+test2);

OK!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021154.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号