【Java】Map<String,Object>中解析Object类型数据为数组格式(94)

news/2024/7/7 14:30:45/文章来源:https://blog.csdn.net/qq_42139049/article/details/131985108

背景
前端:入参为字符串和数组类型;通过json字符串传给后台,
后台:后台通过工具解析为Map<String,Object>,然后需要解析出Map里面的数组值做操作;
需求:
入参:
{
“addOrModify”: “add”,
“hrBdName”: “陕西省”,
“hrBdCode”: “1001”,
“hrBuName”: [“宝鸡市”,“咸阳市”,“汉中市”,“渭南市”],
“hrBuCode”: [“100101”,“100102”,“100103”,“100104”]
}
需转化为:List<Map<String,String>>,入库保存;
[{hrBdName=陕西省,hrBdCode=1001,hrBuName=宝鸡市,hrBuCode=100101},
{hrBdName=陕西省,hrBdCode=1001,hrBuName=咸阳市,hrBuCode=100102},
{hrBdName=陕西省,hrBdCode=1001,hrBuName=汉中市,hrBuCode=100103},
{hrBdName=陕西省,hrBdCode=1001,hrBuName=渭南市,hrBuCode=100104}]

Postman入参:
在这里插入图片描述
控制层:
转化为Map<String,Object>

public Result addOrModifyConfig(@RequestBody String param) {try {Map<String, Object> paramMap = JsonUtils.readValue(param, Map.class);xxxListService.addOrModifyConfig(paramMap);} catch (Exception e) {log.error("XxxListController addOrModifyConfig is error===:" + e.getMessage(), e);return Result.failure("更新失败");}return Result.success().result(null);}

业务层:
业务逻辑:将入参处理为:List<Map<String,String>>格式:

public Result addOrModifyConfig(Map<String, Object> paramMap) {String addOrModify = String.valueOf(paramMap.get("addOrModify"));if(addOrModify.equals("add")){paramMap.remove("addOrModify");List<Map<String,String>> list = new ArrayList<>();String hrBdName = String.valueOf(paramMap.get("hrBdName"));String hrBdCode = String.valueOf(paramMap.get("hrBdCode"));// hrBuName,hrBuCode 前台传数组,经过工具转为Map<String,Object>,// 因为数据比较简单,所以强转为字符串,去除符号[],切割为数组;String[] hrBuNameArr = String.valueOf(paramMap.get("hrBuName")).replace("[","").replace("]","").split(",");String[] hrBuCodeArr = String.valueOf(paramMap.get("hrBuCode")).replace("[","").replace("]","").split(",");if(hrBuNameArr.length == hrBuCodeArr.length && hrBuNameArr.length > 0){for (int j = 0; j < hrBuNameArr.length; j++) {Map<String,String> map = new HashMap<>();map.put("bdname",hrBdName);map.put("bdno",hrBdCode);map.put("buname",hrBuNameArr[j]);map.put("buno",hrBuCodeArr[j]);list.add(map);}}// 2.查询本数据库数据;List<Map<String,String>> magList = xxxListMapper.selectDepartAll();Iterator<Map<String, String>> iterator = list.iterator();while (iterator.hasNext()){Map<String, String> next = iterator.next();String bdname = String.valueOf(next.get("bdname"));String bdno = String.valueOf(next.get("bdno"));String buname = String.valueOf(next.get("buname"));String buno = String.valueOf(next.get("buno"));next.put("isEnable","1");next.put("dicType","icanDepart");Iterator<Map<String, String>> iterator2 = magList.iterator();while (iterator2.hasNext()){Map<String, String> next2 = iterator2.next();String bdname2 = String.valueOf(next2.get("bdname"));String bdno2 = String.valueOf(next2.get("bdno"));String buname2 = String.valueOf(next2.get("buname"));String buno2 = String.valueOf(next2.get("buno"));if(bdname.equals(bdname2) && bdno.equals(bdno2) && buname.equals(buname2) && buno.equals(buno2)){iterator.remove();}}}if(list.size() > 0){xxxListMapper.addOrModifyConfig(list);}}

持久层:数据入库代码

<select id="selectDepartAll" resultType="map">SELECT *FROM xxx_department_list_dic where 1 = 1</select>	<!-- 入库保存 --><insert id="addOrModifyConfig" parameterType="java.util.List"><foreach collection="list" item="res" index="index" separator=";">INSERT IGNORE INTO xxx_department_list_dic<foreach collection="res.entrySet()" index="key" separator="," open="(" close=")">${key}</foreach>VALUES<foreach collection="res.entrySet()" item="value" separator="," open="(" close=")">#{value}</foreach></foreach></insert>

最终目的:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_150455.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

界面控件DevExpress BI Dashboard v23.1——支持全新的图标趋势指标

DevExpress BI Dashboard v23.1支持在Dashboard图表项中使用趋势指标&#xff0c;趋势指标有助于传达一段时间内的数据趋势——允许用户发现模式并更有效地分析复杂的数据集。 使用DevExpress Analytics Dashboard&#xff0c;再选择合适的UI元素&#xff08;图表、数据透视表…

JavaEE初阶之文件操作 —— IO

目录 一、认识文件 1.1认识文件 1.2树型结构组织 和 目录 1.3文件路径(Path) 1.4其他知识 二、Java 中操作文件 2.1File 概述 2.2代码示例 三、文件内容的读写 —— 数据流 3.1InputStream 概述 ​3.2FileInputStream 概述 3.3代码示例 3.4利用 Scanner 进行字…

ChatGPT安全技术

前言 近期&#xff0c;Twitter 博主 lauriewired 声称他发现了一种新的 ChatGPT"越狱"技术&#xff0c;可以绕过 OpenAI 的审查过滤系统&#xff0c;让 ChatGPT 干坏事&#xff0c;如生成勒索软件、键盘记录器等恶意软件。 他利用了人脑的一种"Typoglycemia&q…

IO(JavaEE初阶系列8)

目录 前言&#xff1a; 1.文件 1.1认识文件 1.2结构和目录 1.3文件路径 1.4文本文件vs二进制文件 2.文件系统的操作 2.1Java中操作文件 2.2File概述 2.2.1构造File对象 2.2.2File中的一些方法 3.文件内容的操作 3.1字节流 3.1.1InPutStream的使用方法 3.1.2OutPu…

给你一个小技巧,解放办公室管理!

电力的稳定供应对于现代社会中的办公室和企业来说至关重要。为了应对这些潜在的问题&#xff0c;许多办公室和企业都采用了不间断电源&#xff08;UPS&#xff09;系统来提供电力备份。UPS可以保持关键设备的运行&#xff0c;确保生产和业务不受干扰。 然而&#xff0c;仅仅安装…

【微服务】springboot整合redis哨兵集群使用详解

目录 一、前言 二、环境准备 三、安装redis 3.1 前置准备 3.1.1 下载安装包 3.1.2 准备依赖环境 3.1.3 上传并解压包 3.2 执行安装 四、搭建redis主从集群 4.1 环境准备 4.2 搭建过程 4.2.1 创建实例文件目录 4.2.2 修改redis.conf配置文件 4.2.3 拷贝配置文件 4…

小C说历史(人物介绍第一篇):传奇人物Linus Torvalds 缔造Linux和Git

传奇人物Linus Torvalds 缔造Linux和Git Linus Torvalds&#xff0c;1969年12月28日出生于芬兰的赫尔辛基&#xff0c;Linux核心的创作者。当Linus十岁时&#xff0c;他的祖父&#xff0c;赫尔辛基大学的一位统计教授&#xff0c;购买了一台Commodore VIC-20计算机。Linus帮助他…

【波浪动态特效】基于jquery实现页面底部波浪动画效果(附完整源码下载)

文章目录 写在前面涉及知识点实现效果1、搭建页面1.1、创建两个片区1.2、创建波浪区域1.3、静态页面源码 2、JS实现波浪效果2.1 动画原理2.2 动画源码 3、源码分享3.1 百度网盘3.2 123云盘3.3 邮箱留言 总结 写在前面 想必搭建过企业官网的大多数对这个效果不陌生吧&#xff0…

vue中显示在页面顶部的进度条插件——NProgress

我们在一些网站中经常见到导航栏上方的进度条显示&#xff0c;大家仔细观察&#xff0c;其实csnd中也有类似的效果&#xff0c;如下图显示效果&#xff0c;我们现在就来一起看看这个功能需求是怎么实现的。 一、功能需求 首先&#xff0c;实现这个功能其实不难&#xff0c;说实…

C# Microsoft消息队列服务器的使用 MSMQ

先安装消息队列服务器 private static readonly string path ".\\Private$\\myQueue";private void Create(){if (!MessageQueue.Exists(path)){MessageQueue.Create(path);}}private void Send(){Stopwatch stopwatch new Stopwatch();stopwatch.Start();Message…

动画制作选择Blender还是Maya

Blender和Maya是两种最广泛使用的 3D 建模和动画应用程序。许多经验丰富的用户表示&#xff0c;Blender 在雕刻工具方面远远领先于 Maya&#xff0c;并且在 3D 建模方面达到了相同的质量水平。对于刚接触动画行业的人来说&#xff0c;您可能会问“我应该使用 Blender 还是 Maya…

复习之vsftp服务

一、vsftp服务简介 文件传输协议&#xff08;File Transfer Protocol&#xff0c;FTP&#xff09;是用于在网络上进行文件传输的一套标准协议&#xff0c;它工作在 OSI 模型的第七层 即应用层&#xff0c; 使用 TCP 传输而不是 UDP&#xff0c; 客户在和服务器建立连接前要经过…

mac电脑访问windows共享文件夹连接不上(设置445端口)

前提&#xff1a;首先需要保证mac和windows都在同一局域网内&#xff0c;如果不在肯定是连不上的&#xff0c;就不用往下看了。 事情是这样的&#xff0c;公司入职发了mac电脑&#xff0c;但是我是window重度用户&#xff0c;在折腾mac的过程中&#xff0c;有许多文件需要从wi…

运维作业4

一.简述静态网页和动态网页的区别。 静态页面资源特征 1. 处理文件类型&#xff1a;如.html、jpg、.gif、.mp4、.swf、.avi、.wmv、.flv等 2. 地址中不含有问号"&#xff1f;"或&等特殊符号。 3. 保存在网站服务器文件系统上的&#xff0c;是实实在在保存在服务器…

【有趣的】关于Map的一些小测试

Map在代码中用到得非常多&#xff0c;它是无序的、key-value结构的&#xff0c;其读取会非常快。 今天看了个小文章Map判空 、空字符串、空key值等各种判断方法&#xff0c;你都掌握了吗&#xff1f;便自己也玩一下。 一、判空 因为对象已经new出来了&#xff0c;所以map指向的…

Zabbix报警机制、配置钉钉机器人、自动发现、主动监控概述、配置主动监控、zabbix拓扑图、nginx监控实例

day02 day02配置告警用户数超过50&#xff0c;发送告警邮件实施验证告警配置配置钉钉机器人告警创建钉钉机器人编写脚本并测试添加报警媒介类型为用户添加报警媒介创建触发器创建动作验证自动发现配置自动发现主动监控配置web2使用主动监控修改配置文件&#xff0c;只使用主动…

汽车智能化再掀新热潮!「中央计算架构」进入规模量产周期

中央计算区域控制的新一代整车电子架构&#xff0c;已经成为车企继电动化、智能化&#xff08;功能上车&#xff09;之后&#xff0c;新一轮竞争的焦点。 如果说智能化的1.0阶段&#xff0c;是智能驾驶智能座舱的争夺战&#xff1b;那么&#xff0c;即将进入的2.0阶段&#xff…

爱尔眼科四川省区“同心博爱 光明工程”“西部健康公益行”炉霍站启动

8月1日&#xff0c;“同心博爱 光明工程”“西部健康公益行”炉霍站出征仪式在四川爱尔眼科医院隆重举行。 此次公益活动由民革成都市委会、中共锦江区委统战部指导&#xff0c;如意树爱心促进会主办&#xff0c;民革锦江区总支部、爱尔眼科四川省区支持&#xff0c;四川爱尔眼…

SCI论文的发文的模板(Elsevier,MDPI,IEEE)

不同的SCI期刊都有自己的出版商&#xff0c;不同的出版商有不同的发文格式。 最简单的方式就是去查官网上面&#xff0c;常用的期刊格式如下。到对应的位置下载模板即可&#xff0c;推荐使用latex。 MDPI MDPI | Preparing Manuscripts in LaTeX Elsevier Guide for authors …

【Linux指令篇】--- Linux常用指令汇总(克服指令繁杂问题)

文章目录 前言&#x1f31f;一、Linux基本指令&#x1f31f;二、ls指令&#x1f30f;2.1.语法&#xff1a;&#x1f30f;2.2.功能&#xff1a;&#x1f30f;2.3.常用选项&#xff1a; &#x1f31f;三、pwd指令&#x1f30f;3.1.语法&#xff1a;&#x1f30f;3.2.功能&#xf…