JSONObject,TreeUtil,EagelMap,BeanUtil使用
目录
JSONObject的使用
TreeUtil的使用
EagleMap使用
安装
application.yml配置
springboot导入依赖
配置信息
简单使用
如果想获取这个json字符串里面的distance的值
BeanUtil拷贝注意
JSONObject的使用
假如我现在要处理这样的json数据

可以直接使用JSONUtil.parseObj()方法将其解析成JSONObject对象
JSONObject jsonObject = JSONUtil.parseObj(msg);

现在要获取里面的值,因为type是字符串类型,所以使用getStr(key)方法
String type = jsonObject.getStr("type");
String operation = jsonObject.getStr("operation");
获取数组类型的值,使用getJSONArray()方法,然后获取下标为0的值,并且强转为JSONObject类型。
JSONObject content = (JSONObject) jsonObject.getJSONArray("content").getObj(0);
获取Long类型的值,使用getLong()方法,会自动把字符串类型转换成Long类型
Long parentId = content.getLong("parentId");
获取boolean类型的值,使用getBool()方法
content.getBool("status")
获取int类型的值,使用getInt方法
content.getInt("managerId")
TreeUtil的使用
在处理业务时,我们会碰到要把一个集合数据将其转换成树状结构返回给前端,hutool工具类提供了一个TreeUtil工具类可以帮我们很快的实现这个业务
参考文档:
树结构工具-TreeUtil
示例:
在一个类里要有parentId成员变量,代指父亲id,一般第一层的父id都规定为0

使用
@GetMapping("tree")public String findAllTree() throws JsonProcessingException {// TODO day05 查询机构树// 查询全部机构数据 如果为空,返回空字符串List<OrganDTO> organDTOS = this.organService.findAll(null);// 如果不为空,构造树结构 tips: 使用TreeUtil构建if(CollUtil.isNotEmpty(organDTOS)){//让0作为第一层的父idList<Tree<Long>> trees = TreeUtil.build(organDTOS, 0L, (organDTO, tree) -> {//这三个值一定要设置tree.setId(organDTO.getId());tree.setParentId(organDTO.getParentId());tree.setName(organDTO.getName());//批量把成员变量导入tree.putAll(BeanUtil.beanToMap(organDTO));});// 通过jackson将数据节点转为json字符串 objectMapper.writeValueAsStringreturn objectMapper.writeValueAsString(trees);//如果使用JSONUtil序列化,就会缺少值为空的成员变量}return "";}
刚开始去数据库查询所有数据时,没有分层关系
(organDTO, tree) -> {//这三个值一定要设置tree.setId(organDTO.getId());tree.setParentId(organDTO.getParentId());tree.setName(organDTO.getName());//批量把成员变量导入tree.putAll(BeanUtil.beanToMap(organDTO));}lambda表达式,organDto代指集合的每一个数据,tree是树型数据(泛型是id类型,为Long),id,parentId,name一定要设置,然后通过putAll方法把organDto的成员变量都赋值给树形数据
// 通过jackson将数据节点转为json字符串 objectMapper.writeValueAsStringreturn objectMapper.writeValueAsString(trees);//如果使用JSONUtil序列化,就会缺少值为空的成员变量这里使用jackson的ObjectMapper来json序列化,因为JOSNUtil的json序列化不会序列化值为空的成员变量
结果:
tree树形数据会自动添加children成员变量

如果不使用这个工具类,就需要在OrganDto类下添加成员变量
List<OrganDTO>children;
然后使用递归:
private List<OrganDTO>getTree(List<OrganDTO>organDTOS,Long pid){List<OrganDTO>tree=new ArrayList<>();for (OrganDTO organDTO : organDTOS) {OrganDTO node;if(ObjectUtil.equals(organDTO.getParentId(),pid)){node = new OrganDTO();BeanUtil.copyProperties(organDTO,node);node.setChildren(getTree(organDTOs,organDTO.getParentId()))}tree.add(node);}return tree;}
EagleMap使用
文档:
EagleMap - 地图服务中台 黑马程序员·研究院
安装
#拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/itheima/eagle-map-server:latestdocker create --name eagle-map-server \ -p 8484:8484 \ -v itcast/eaglemap/app/application.yml:/app/eagle-map-server/conf/application.yml \ -v itcast/eaglemap/app/logs:/app/eagle-map-server/logs \ registry.cn-hangzhou.aliyuncs.com/itheima/eagle-map-server:latest#以上命令指定了端口号、配置文件、日志等信息docker start eagle-map-server
application.yml配置
server:port: 8484 #RESTful服务端口
spring:
# datasource: #数据库的配置
# driver-class-name: com.mysql.jdbc.Driver
# url: jdbc:mysql://172.17.2.135:3306/eaglemap?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
# username: root
# password: root123
eagle:#服务模式,可选参数:BASE、COMPLETE,默认:BASE#BASE模式中无需配置数据库,只保留基础的地图服务service-mode: BASE#默认策略,可选参数:BAIDU、AMAP、NONE,默认:NONE#如果指定了默认策略,在接口中不指定服务商时才用的策略,如果指定NONE,有系统来决定default-provider-strategy: NONEbaidu-web-api: https://api.map.baidu.com #百度地图web api服务地址baidu-ying-yan-api: http://yingyan.baidu.com #百度地图鹰眼服务地址amap-web-api: https://restapi.amap.com #高德地图web api服务地址amap-ts-api: https://tsapi.amap.com #高德地图猎鹰服务地址admin: #可视化管理系统的配置user: eagle #用户名password: b09315ea09c6d3b5680094257f1f70e4 #密码:eagle,md5加密后#RSA的私钥#RSA的公钥token-time: 24 #token有效期,单位:小时timeout: 30000 #请求超时时间,单位:毫秒trace-image: #轨迹缩略图scale: 0.9 #缩放比,默认0.9background: "#FFFFFF" #背景颜色trace-color: "#6699FF" #轨迹颜色stroke-width: 3 #画笔宽度width: 300 #生成图片的宽度height: 300 #生成图片的高度
# baidu: #百度相关的配置
# enable: false #是否启用
# name: 百度地图 #服务商的名称
# server: #服务端账号的配置
# id: xxxxx
# name: xxxxx
# ak: xxxxx
# type: xxxxx
# browser: #浏览器端账号的配置
# id: xxxxx
# name: xxxxx
# ak: xxxxx
# type: xxxxx
# trace-servers: #百度地图中的轨迹服务
# - id: xxxxx
# name: xxxxx
# type: xxxxx
# date: xxxxx
# - id: xxxxx
# name: xxxxx
# type: xxxxx
# date: xxxxxamap: #高德相关的配置enable: true #是否启用name: 高德地图 #服务商的名称server: #服务端账号的配置name: EagleMap-Serverak: 85db5737cb07bd69fd79c47db37edtype: Web服务browser: #浏览器端账号的配置name: EagleMap-JSak: 0249fa505ac60236af082df54413266sk: 52decdd5151bac3021fa6736979258type: Web端
amap: #高德相关的配置
enable: true #是否启用
name: 高德地图 #服务商的名称
server: #服务端账号的配置
name: EagleMap-Server
ak: 85db5737cb07bd69fd79c47db37ed
type: Web服务
browser: #浏览器端账号的配置
name: EagleMap-JS
ak: 0249fa505ac60236af082df54413266
sk: 52decdd5151bac3021fa6736979258
type: Web端这里配置了高德地图,ak值需要我们自己去申请
我的应用 | 高德控制台
然后创建新的应用,创建完成,添加key
这里分别创建两个key,一个是服务端,一个是web端
创建完成
springboot导入依赖
<dependency><groupId>com.itheima.em</groupId><artifactId>eaglemap-spring-boot-starter</artifactId><version>1.0</version></dependency>
配置信息
eagle:host: 192.168.150.101 #EagleMap服务地址port: 8484 #EagleMap服务端口timeout: 20000 #http请求的超时时间
简单使用
@SpringBootTest
public class Test2 {@ResourceEagleMapTemplate eagleMapTemplate;@Testpublic void test01(){//详细地址转换坐标String address = "北京大学";GeoResult geoResult = this.eagleMapTemplate.opsForBase().geoCode(ProviderEnum.AMAP, address, null);System.out.println(geoResult);}

@Testpublic void driving() {//驾车路线规划Coordinate origin = new Coordinate(116.34411597643727, 40.06061915065967);Coordinate destination = new Coordinate(116.398704, 39.907539);String result = this.eagleMapTemplate.opsForDirection().driving(ProviderEnum.AMAP, origin, destination);System.out.println(result);}
一共有三条路线
如果想获取这个json字符串里面的distance的值
一般方法:
JSONObejct jsonObject =JSONUtil.parseObject(msg);
JSONObject route=jsonObject.getObj("route");
JSONObject path==route.getJSONArray("path").getObj(0);
Long distance=path.getLong("distance");
特殊方法
JSONObejct jsonObject =JSONUtil.parseObject(msg);
Long distance=Convert.toLong(jsonObject.getByPath("route.paths[0].distance"));//只要我们规定要要取到值的路径,hutool工具类会直接帮我们获取到值


BeanUtil拷贝注意
在将transportLine的成员变量的值拷贝给transportLineDate数据时,不会把transportLine值为空的成员变量进行拷贝,也不会把值覆盖到transportLineDate原来的type,startOrganId,startOrganName,endOrganId,endOrganName
//拷贝数据,忽略null值以及不能修改的字段BeanUtil.copyProperties(transportLine, transportLineData, CopyOptions.create().setIgnoreNullValue(true).setIgnoreProperties("type", "startOrganId", "startOrganName", "endOrganId", "endOrganName"));
相关文章:
JSONObject,TreeUtil,EagelMap,BeanUtil使用
目录 JSONObject的使用 TreeUtil的使用 EagleMap使用 安装 application.yml配置 springboot导入依赖 配置信息 简单使用 如果想获取这个json字符串里面的distance的值 BeanUtil拷贝注意 JSONObject的使用 假如我现在要处理这样的json数据 可以直接使用JSONUtil.parseObj…...
Unity嵌入到Winform
Unity嵌入到Winform Winform工程🌈...
TCP/UDP协议与OSI七层模型的关系解析| HTTPS与HTTP安全性深度思考》
目录 OSI 7层模型每一层包含的协议: TCP和UDP协议: TCP (Transmission Control Protocol): UDP (User Datagram Protocol): 数据包流程图 TCP与UDP的区别: 传输层与应用层的关联 传输层和应用层的关联…...
《Zookeeper 分布式过程协同技术详解》读书笔记-2
目录 zk的一些内部原理和应用请求,事务和标识读写操作事务标识(zxid) 群首选举Zab协议(ZooKeeper Atomic Broadcast protocol)文件系统和监听通知机制分布式配置中心, 简单Demojava code 集群管理code 分布式锁 zk的一…...
缺陷检测之图片标注工具--labme
一、labelme简介 Labelme是开源的图像标注工具,常用做检测,分割和分类任务的图像标注。 它的功能很多,包括: 对图像进行多边形,矩形,圆形,多段线,线段,点形式的标注&a…...
机器学习_13 决策树知识总结
决策树是一种直观且强大的机器学习算法,广泛应用于分类和回归任务。它通过树状结构的决策规则来建模数据,易于理解和解释。今天,我们就来深入探讨决策树的原理、实现和应用。 一、决策树的基本概念 1.1 决策树的工作原理 决策树是一种基于…...
请解释一下Standford Alpaca格式、sharegpt数据格式-------deepseek问答记录
1 Standford Alpaca格式 json格式数据。Stanford Alpaca 格式是一种用于训练和评估自然语言处理(NLP)模型的数据格式,特别是在指令跟随任务中。它由斯坦福大学的研究团队开发,旨在帮助模型理解和执行自然语言指令。以下是该格式的…...
ubuntu 安装管理多版本python3 相关问题解决
背景:使用ubuntu 22.04 默认python 未3.10.编译一些模块的时候发现需要降级到python3.9.于是下载安装 下载: wget https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tgz解压与编译 tar -xf Python-3.9.16.tgz cd Python-3.9.16 ./configure -…...
滑动窗口算法篇:连续子区间与子串问题
1.滑动窗口原理 那么一谈到子区间的问题,我们可能会想到我们可以用我们的前缀和来应用子区间问题,但是这里对于子区间乃至子串问题,我们也可以尝试往滑动窗口的思路方向去进行一个尝试,那么说那么半天,滑动窗口是什么…...
Python爬虫实战:股票分时数据抓取与存储 (1)
在金融数据分析中,股票分时数据是投资者和分析师的重要资源。它能够帮助我们了解股票在交易日内的价格波动情况,从而为交易决策提供依据。然而,获取这些数据往往需要借助专业的金融数据平台,其成本较高。幸运的是,通过…...
【设计模式】【行为型模式】访问者模式(Visitor)
👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 🎵 当你的天空突…...
基于实例详解pytest钩子pytest_generate_tests动态生成测试的全过程
关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 作为一名软件开发人员,你一定深知有效测试策略的重要性,尤其…...
Copilot基于企业PPT模板生成演示文稿
关于copilot创建PPT,咱们写过较多文章了: Copilot for PowerPoint通过文件创建PPT Copilot如何将word文稿一键转为PPT Copilot一键将PDF转为PPT,治好了我的精神内耗 测评Copilot和ChatGPT-4o从PDF创建PPT功能 Copilot for PPT全新功能&a…...
2025百度快排技术分析:模拟点击与发包算法的背后原理
一晃做SEO已经15年了,2025年还有人问我如何做百度快速排名,我能给出的答案就是:做好内容的前提下,多刷刷吧!百度的SEO排名算法一直是众多SEO从业者研究的重点,模拟算法、点击算法和发包算法是百度快速排名的…...
七星棋牌全开源修复版源码解析:6端兼容,200种玩法全面支持
本篇文章将详细讲解 七星棋牌修复版源码 的 技术架构、功能实现、二次开发思路、搭建教程 等内容,助您快速掌握该棋牌系统的开发技巧。 1. 七星棋牌源码概述 七星棋牌修复版源码是一款高度自由的 开源棋牌项目,该版本修复了原版中的多个 系统漏洞&#…...
解锁原型模式:Java 中的高效对象创建之道
系列文章目录 后续补充~~~ 文章目录 一、引言1.1 软件开发中的对象创建困境1.2 原型模式的登场 二、原型模式的核心概念2.1 定义与概念2.2 工作原理剖析2.3 与其他创建型模式的差异 三、原型模式的结构与角色3.1 抽象原型角色3.2 具体原型角色3.3 客户端角色3.4 原型管理器角色…...
DeepSeek从入门到精通:揭秘 AI 提示语设计误区与 AI 幻觉(新手避坑指南)
文章目录 引言常见陷阱与应对策略:新手必知的提示词设计误区缺乏迭代陷阱:期待一次性完美结果过度指令与模糊指令陷阱:当细节缺乏重点或意图不明确假设偏见陷阱:当前 AI 只听你想听的幻觉生成陷阱:当AI自信地胡说八道忽…...
Jenkins同一个项目不同分支指定不同JAVA环境
背景 一些系统应用,会为了适配不同的平台,导致不同的分支下用的是不同的gradle,导致需要不同的JAVA环境来编译,比如a分支需要使用JAVA11, b分支使用JAVA17。 但是jenkins上,一般都是Global Tool Configuration 全局所有环境公用一个JAVA_HOME。 尝试过用 Build 的Execut…...
从入门到精通:Postman 实用指南
Postman 是一款超棒的 API 开发工具,能用来测试、调试和管理 API,大大提升开发效率。下面就给大家详细讲讲它的安装、使用方法,再分享些实用技巧。 一、安装 Postman 你能在 Postman 官网(https://www.postman.com )下…...
win32汇编环境,对话框中使用月历控件示例二
;运行效果 ;win32汇编环境,对话框中使用月历控件示例二 ;以下示例有2个操作,即将每周的开始日进行改变,将默认的周日开始改为周一开始,同时实现点击哪个日期,则设定为哪个日期 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>&…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...








