您现在的位置是:首页 > java技术交流java技术交流
JsonNode findPath方法详解 JsonNode判断是否为空详解
上善若水2020-09-10 11:52:10【java技术交流】 8471人已围观
简介在使用com.fasterxml.jackson.databind.JsonNode的findPath方法,会用于判断是否是否正确的查找到结果,path()只能查找儿子节点,而findPath则会查找
在使用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的结果图
很赞哦! (21)
相关文章
随机图文
-
ThinkPHP6.0主要新特性
ThinkPHP6.0主要新特性 -
笑的肚子痛的15个诙谐段子:妙趣横生,一个比一个搞笑!
一、老爸喜欢钓鱼,所以钓竿很多!一个星期前,大伯来了,说借钓竿去钓鱼,刚好爸爸不在,我忙着打游戏,就说,大伯,等我找到给你送去哈。一个星期过去了,我突然想起了钓竿还没送过去,拿着钓竿就去了大伯家。大伯看着我手里的钓竿说,你让那些鱼多活了一个星期!二、狙击手小李,在狙击比赛中获得一等奖,回来以后,好友问他:“哇,你真厉害,趴在雪地里两个小时,一动都不动,你这定力怎么练出来的?”三、小时候眼睛 -
PHP8.0新特性(5) Match 表达式
熟悉PHP8.0的新特性,Match表达式match匹配比较严格,会验证类型和值,但大多数情况下,Match都可以替代,而且语法更加简洁!官方文档:https://www.php.net/manua -
ThinkPHP6.0 只读字段
只读字段用来保护某些特殊的字段值不被更改,这个字段的值一旦写入,就无法更改。 要使用只读字段的功能,我们只需要在模型中定义readonly属性: