json数据的key的读取和替换
时间:2019-08-06
本文章向大家介绍json数据的key的读取和替换,主要包括json数据的key的读取和替换使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
读取json的key:
/** * @Description: 递归读取所有的key * @Param: * @return: * @throws Exception * @author: hw * @date: 2019/7/31 15:18 */ public static Set<String> getAllKey(JSONObject jsonObject) { Set<String> myset = new HashSet<>(); Iterator<String> keys = jsonObject.keySet().iterator();// jsonObject.keys(); while (keys.hasNext()) { String key = keys.next(); myset.add(key.toString()); if (jsonObject.get(key) instanceof JSONObject) { JSONObject innerObject = (JSONObject) jsonObject.get(key); myset.addAll(getAllKey(innerObject)); } else if (jsonObject.get(key) instanceof JSONArray) { JSONArray innerObject = (JSONArray) jsonObject.get(key); myset.addAll(getAllKey(innerObject)); } } return myset; } public static Set<String> getAllKey(JSONArray json1) { Set<String> myset = new HashSet<>(); if (json1 != null ) { Iterator i1 = json1.iterator(); while (i1.hasNext()) { Object key = i1.next(); if (key instanceof JSONObject) { JSONObject innerObject = (JSONObject) key; myset.addAll(getAllKey(innerObject)); } else if (key instanceof JSONArray) { JSONArray innerObject = (JSONArray) key; myset.addAll(getAllKey(innerObject)); } } } return myset; }
替换json的key:
/** * @Description: 替换json数据的key * @Param: * @return: * @throws Exception * @author: hw * @date: 2019/7/31 16:22 */ public static JSONObject changeJsonObj(JSONObject jsonObj,Map<String, String> keyMap) { JSONObject resJson = new JSONObject(); Set<String> keySet = jsonObj.keySet(); for (String key : keySet) { String resKey = keyMap.get(key) == null ? key : keyMap.get(key); try { if (jsonObj.get(key) instanceof JSONObject) { JSONObject jsonobj1 = (JSONObject) jsonObj.get(key); resJson.put(resKey, changeJsonObj(jsonobj1, keyMap)); } else if (jsonObj.get(key) instanceof JSONArray) { JSONArray jsonArr = (JSONArray) jsonObj.get(key); resJson.put(resKey, changeJsonArr(jsonArr, keyMap)); }else { resJson.put(resKey, jsonObj.get(key)); } } catch (Exception e) { e.printStackTrace(); } } return resJson; } public static JSONArray changeJsonArr(JSONArray jsonArr,Map<String, String> keyMap) { JSONArray resJson = new JSONArray(); for (int i = 0; i < jsonArr.size(); i++) { JSONObject jsonObj = jsonArr.getJSONObject(i); resJson.add(changeJsonObj(jsonObj, keyMap)); } return resJson; }
测试方法:
public static void main(String[] args) { String test = "{\n" + "\t\"ret\": \"0\",\n" + "\t\"retMsg\": null,\n" + "\t\"count\": 1,\n" + "\t\"processCost\": null,\n" + "\t\"data\": [{\n" + "\t\t\t\"moniid\": \"11\",\n" + "\t\t\t\"serialnumber\": \"12\",\n" + "\t\t\t\"monitype\": \"13\"\n" + "\t\t},\n" + "\t\t{\n" + "\t\t\t\"moniid\": \"22\",\n" + "\t\t\t\"serialnumber\": \"22\",\n" + "\t\t\t\"monitype\": \"23\"\n" + "\t\t},\n" + "\t\t{\n" + "\t\t\t\"moniid\": \"33\",\n" + "\t\t\t\"serialnumber\": \"32\",\n" + "\t\t\t\"monitype\": \"33\"\n" + "\t\t}\n" + "\t]\n" + "}"; Map<String, String> keyMap = new HashMap<String, String>(); keyMap.put("count", "param1"); keyMap.put("processCost", "param2"); keyMap.put("desc", "param3"); keyMap.put("moniid", "param4"); keyMap.put("serialnumber", "param5"); keyMap.put("monitype", "param6"); keyMap.put("data", "param7"); JSONObject jsonObj = changeJsonObj(JSONObject.parseObject(test),keyMap); System.out.println(jsonObj.toString()); }
原文地址:https://www.cnblogs.com/weihuang6620/p/11308832.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 虚拟机安装Linux rhel7.3操作系统(具体步骤)
- linux系统安装zookeeper 服务的方法
- 详解Linux中关于引号的那些事
- seaborn可视化数据框中的多个列元素
- Android OpenGLES如何给相机添加滤镜详解
- VmWare安装centos7无法上网的解决方法
- 如何修改CentOS服务器时间为北京时间
- linux下搭建go环境的安装配置讲解
- linux下搭建scala环境并写个简单的scala程序
- 在Linux系统下上传项目到码云的方法
- 使用seaborn绘制热图
- CentOS中环境变量与配置文件的深入讲解
- 详解linux下fsevents模块引起的npm ls报错解决办法
- 解决nginx/apache静态资源跨域访问问题详解
- 可怕的万圣节 Linux 命令