当前位置: 首页 > news >正文

jsonpath 判断是否包含_JsonNode findPath方法详解 JsonNode判断是否为空详解

在使用com.fasterxml.jackson.databind.JsonNode的findPath方法,会用于判断是否是否正确的查找到结果,path()只能查找儿子节点,而findPath则会查找子孙节点,对于层级较多的json使用findPath更加便利!

话不多说直接贴代码,创建JsonNode的过程请忽略.

JSONObject jsonObject = new JSONObject();

jsonObject.put("a", "a");

jsonObject.put("B", "B");

jsonObject.put("C", "C");

jsonObject.put("D", "D");

JSONObject jsonObject2 = new JSONObject();

jsonObject2.put("a2", "a2");

jsonObject2.put("B2", "B2");

jsonObject2.put("C2", "C2");

jsonObject2.put("D2", "D2");

jsonObject.put("obj", jsonObject2);

jsonObject.put("arr", Collections.singletonList(jsonObject2));

JsonNode warehouseOrderJsonNode = (JsonNode) YGJson.fromJson(jsonObject.toJSONString(), JsonNode.class);

boolean missingNode1 = warehouseOrderJsonNode.findPath("aaaa").isNull();//false

boolean missingNode2 = warehouseOrderJsonNode.findPath("aaaa").isEmpty();//true

boolean missingNode3 = warehouseOrderJsonNode.findPath("aaaa").isMissingNode();//true

String missingNode4 = warehouseOrderJsonNode.findPath("aaaa").asText();//""

boolean missingNode5 = warehouseOrderJsonNode.findPath("aaaa").isArray();//false

boolean missingNode6 = warehouseOrderJsonNode.findPath("aaaa").isObject();//false

boolean child1 = warehouseOrderJsonNode.findPath("a").isNull();//false

boolean child2 = warehouseOrderJsonNode.findPath("a").isEmpty();//true

boolean child3 = warehouseOrderJsonNode.findPath("a").isMissingNode();//false

String child4 = warehouseOrderJsonNode.findPath("a").asText();//"a"

boolean child5 = warehouseOrderJsonNode.findPath("aaaa").isArray();//false

boolean child6 = warehouseOrderJsonNode.findPath("aaaa").isObject();//false

boolean son1 = warehouseOrderJsonNode.findPath("a2").isNull();//false

boolean son2 = warehouseOrderJsonNode.findPath("a2").isEmpty();//true

boolean son3 = warehouseOrderJsonNode.findPath("a2").isMissingNode();//false

String son4 = warehouseOrderJsonNode.findPath("a2").asText();//"a2"

boolean son5 = warehouseOrderJsonNode.findPath("aaaa").isArray();//false

boolean son6 = warehouseOrderJsonNode.findPath("aaaa").isObject();//false

boolean obj1 = warehouseOrderJsonNode.findPath("obj").isNull();//false

boolean obj2 = warehouseOrderJsonNode.findPath("obj").isEmpty();//false

boolean obj3 = warehouseOrderJsonNode.findPath("obj").isMissingNode();//false

String obj4 = warehouseOrderJsonNode.findPath("obj").asText();//""

boolean obj5 = warehouseOrderJsonNode.findPath("obj").isArray();//false

boolean obj6 = warehouseOrderJsonNode.findPath("obj").isObject();//true

boolean arr1 = warehouseOrderJsonNode.findPath("arr").isNull();//false

boolean arr2 = warehouseOrderJsonNode.findPath("arr").isEmpty();//false

boolean arr3 = warehouseOrderJsonNode.findPath("arr").isMissingNode();//false

String arr4 = warehouseOrderJsonNode.findPath("arr").asText();//""

boolean arr5 = warehouseOrderJsonNode.findPath("arr").isArray();//true

boolean arr6 = warehouseOrderJsonNode.findPath("arr").isObject();//false

将以上方法的findPath()替换为path()后所有的返回值不变.

附上debug的结果图

相关文章:

  • php 实现mqtt 订阅监听功能出错_Redis发布订阅原理以及java实现
  • 前端工程师需要学习ps 吗_前端人员一定要掌握的PS技巧
  • 节能证书在哪里查询_证书查询
  • python 检查域名是否可以访问_python检查URL是否能正常访问
  • vue列表渲染中key的作用_React / Vue 项目时为什么要在列表组件中写 key,其作用是什么?...
  • vuepress侧边栏配置_侧边栏(sidebar) - VuePress 中文文档
  • python编写性别比例_python实现爬虫统计学校BBS男女比例(一)
  • iphone原彩显示对眼睛好吗_iPhone x手机原彩显示烧屏怎么办呢
  • linux 启动nacos报错_Nacos部署中的一些常见问题汇总
  • 中科院aibench_CVPR2019人脸防伪检测挑战赛Top3论文代码及模型解析
  • flutter 页面加载动画_为页面切换加入动画效果
  • 可变悬挂与空气悬挂的区别_可调悬挂和空气悬挂有什么区别啊,求解释
  • base64图裁剪 php_php解析base64数据生成图片的方法
  • cahrt框架 ios_iOS使用Charts框架绘制柱形图
  • 关于python搞笑段子精选_你能讲一个让人瞬间爆笑的笑话吗?
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 3.7、@ResponseBody 和 @RestController
  • canvas 五子棋游戏
  • Create React App 使用
  • Java Agent 学习笔记
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JavaScript 一些 DOM 的知识点
  • mysql 5.6 原生Online DDL解析
  • webpack入门学习手记(二)
  • 读懂package.json -- 依赖管理
  • 分布式事物理论与实践
  • 区块链共识机制优缺点对比都是什么
  • 深入浏览器事件循环的本质
  • 使用Swoole加速Laravel(正式环境中)
  • 微服务框架lagom
  • 携程小程序初体验
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​TypeScript都不会用,也敢说会前端?
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #大学#套接字
  • (12)Linux 常见的三种进程状态
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (生成器)yield与(迭代器)generator
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (十六)Flask之蓝图
  • .gitattributes 文件
  • .NET CLR Hosting 简介
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .net连接oracle数据库
  • //解决validator验证插件多个name相同只验证第一的问题
  • @基于大模型的旅游路线推荐方案
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [2018-01-08] Python强化周的第一天
  • [Android Pro] AndroidX重构和映射
  • [android] 切换界面的通用处理
  • [C++ 从入门到精通] 12.重载运算符、赋值运算符重载、析构函数