添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

近期因为需要处理50多个不同结构的数据进行标准化处理,想到做如此多的实体,浪费生命,所以就开始启用模板配置方法,然后基于这个思路,调研了些是否有轮子,结果发现这篇文章, https://blog.csdn.net/qq_39750658/article/details/83411897 ,思路不错,但是就像该文章下面的评论提到的,如果不同层级的key同名要换成各自的name,会出现问题,所以进行了改造。

特殊说明: 以下case仅仅是为了证明此工具类具备的功能,不代表实际数据

处理目标: 将第二层的name处理成xingming,将第三层的name和game统一处理成hobbyname

原始数据:

"user": { "name": "张三", "sex": "男", "hobby": [ "name": "足球", "desc": "任性" "game": "英雄联盟", "desc": "就是这么任性"

目标结果:

"user": { "sex": "男", "xingming": "张三", "hobby": [ "hobbyname": "足球", "desc": "任性" "hobbyname": "英雄联盟", "desc": "就是这么任性"

然后具体怎么实现的,请阅读下面的配置和相应的代码片段

json映射:

'_next': { 'name': 'xingming', '_next': { 'name': 'hobbyname', 'game': 'hobbyname'

处理代码:

import java.util.Set; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; * 基于json配置文件对json数据key进行替换 * 若每一层需要不同的映射,必须严格按照json层级进行配置 * 若每一层都使用当前层同一套配置,只需要配置到当前层即可 public class JSONUtil { public static JSONObject changeJsonObj(JSONObject jsonObj,JSONObject keyMap) { JSONObject resJson = new JSONObject(); Set<String> keySet = jsonObj.keySet(); for (String key : keySet) { String resKey = keyMap.get(key) == null ? key : keyMap.getString(key); try { JSONObject jsonobj1 = jsonObj.getJSONObject(key); JSONObject keyMapNext = keyMap.getJSONObject("_next") == null ? keyMap : keyMap.getJSONObject("_next"); resJson.put(resKey, changeJsonObj(jsonobj1, keyMapNext)); } catch (Exception e) { try { JSONArray jsonArr = jsonObj.getJSONArray(key); JSONObject keyMapNext = keyMap.getJSONObject("_next") == null ? keyMap : keyMap.getJSONObject("_next"); resJson.put(resKey, changeJsonArr(jsonArr, keyMapNext)); } catch (Exception x) { resJson.put(resKey, jsonObj.get(key)); return resJson; public static JSONArray changeJsonArr(JSONArray jsonArr,JSONObject 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 jsonStr = "{\"user\":{\"name\":\"张三\",\"sex\":\"男\",\"hobby\":[{\"name\":\"足球\",\"desc\":\"任性\"},{\"game\":\"英雄联盟\",\"desc\":\"就是这么任性\"}]}}"; //使用json作为映射关系的配置 String jsonKeyMap = "{'_next':{'name':'xingming','_next':{'name':'hobbyname','game':'hobbyname'}}}"; JSONObject jsonKeyObject = JSONObject.parseObject(jsonKeyMap); JSONObject jsonObj = JSONUtil.changeJsonObj(JSONObject.parseObject(jsonStr),jsonKeyObject); System.out.println("换值结果 》》 " + jsonObj.toString()); var tree = [{   "PositionGuid": "f5af03a9-968c-46b1-8b5d-17d8a64be22d",   "TemplateGuid": "e5d53c43-a77b-419d-8b49-4d32deff14fd",   "DevNameID": "0010d1d6-2fc1-471c-a82a-3ddb5248de2b",   "Dev... 根据实际开发需求,需解析 JSON 格式的参数。修改 key 的值变换成中文,如“name“:"张三",就需要修改成“姓名“:“张三”。解决此需求,需分为以下三个步骤: 1. 解析 json 参数,解析到要修改的层 2. 修改 key 值 3. 返封装参数。 下面我们就根据上述的步骤完成一个案例。相信这个案例掌握后,对于类似的 JSON 解析以及修改值对你来说就很简单啦! 通过递归遍历 JSON 结构,根据传入的 Map 动态地 替换 多个键值对。这个方法对处理复杂的嵌套 JSON 数据 结构非常有效,并且可以灵活地扩展以处理更多复杂的修改需求。 输出结果: 可以看到直接输出 key 也是自定义的,但这里用的是alibaba.fast json 注解完成的,和上面使用场景不一样,因为springboot使用fast json 序列化对象。在springboot请求接口返回对象得到的结果:(因为springboot使用fast json 序列化对象)实体类属性上增加@ JSON Field(name = “属性名”)注解(alibaba.fast json )实体类的属性上面增加@ Json Property(“字段名”)注解(fast json ) public String update Json (String str, String update Key , String newValue) { JSON Object json = JSON Object.parseObject(str); Set<String> key Set = json . key Set(); for (String key : key Set) { Object obj = json .get( key ); JSON Model是 json 转model的第三方开源库。当我们向服务器发送一个请求之后,通过 JSON Model把 数据 转成model中的属性就可以很方便的供给我们使用了。 springboot中@Result注解设置字段及实体属性 映射 关系,当字段类型为 JSON Object和 JSON Array时设置 映射 关系 JSON 格式表字段 映射 : @Result(column = "alarm_rule", property = "alarmRule", jdbcType = JdbcType.OTHER, typeHandler = com.geespace.microservices.data.metrics.config.server.dao.MySql Json Han. JSON 结构 转换 指的是将一个 JSON 对象或 JSON 数组按照一定规则 进行 重组、筛选、 映射 转换 ,生成新的 JSON 对象或数组的过程。这种 转换 可以包括改变 JSON 数据 的结构、提取特定字段、合并多个 JSON 数据 ,或者对 数据 进行 计算和处理等操作。通过结构 转换 ,可以根据需求定制化地处理 JSON 数据 ,使其符合特定的业务逻辑或 数据 格式要求。为了让使用者更加方便的 配置 映射 关系,为此开发了一套在线 转换 工具,可在工具中通过拖拽即可 配置 想要的结构 转换 关系,并可对 转换 关系所能实现的效果实时 进行 预览更改。 数据 交换- JSON JSON 介绍 JSON 使用 JSON 转字符串字符串转 JSON JSON 与字符串互相 转换 细节 JSON Java 中的使用 Java 对象与 JSON 字符串互相 转换 List对象与 JSON 字符串 转换 Map对象与 JSON 字符串 转换 JSON 介绍 JSON 指的是 Java Script对象表示法( Java Script Object Notation) JSON 是轻量级的文本 数据 交换格式 JSON 独立于语言【即 java . php、asp.net等都可以使用 JSON ] JSON 具有自我描述性,更易理解