您现在的位置是:首页 > java技术交流java技术交流

JsonNode findPath方法详解 JsonNode判断是否为空详解

上善若水2020-09-10 11:52:10【java技术交流】 8459人已围观

简介在使用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)

相关文章

文章评论

站点信息

  • 建站时间:2019-10-24
  • 网站程序:Thinkphp6 Layui
  • 文章统计247篇文章
  • 标签管理标签云
  • 统计数据cnzz统计
  • 微信公众号:扫描二维码,关注我们