JsonPath

JsonPath

    • JsonPath参照XPath解析xml的方式来解析Json
    • JsonPath用符号$表示最外层对象,类似于Xpath中的根元素
    • JsonPath可以通过点语法来检索数据,如: shell $.store.book[0].title
    • 也可以使用中括号[]的形式,如 shell $['store']['book'][0]['title']

 

运算符(Operators)

运算符说明$根元素@当前元素*通配符,可以表示任何元素..递归搜索.子节点(元素)['' (, '')]一个或者多个子节点[ (, )]一个或者多个数组下标[start:end]数组片段,区间为[start,end)[?()]过滤器表达式,其中表达式结果必须是boolean类型,如可以是比较表达式或者逻辑表达式

 

在pom.xml中添加Maven依赖

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>2.3.0</version>
</dependency>

 

{
            //最简单直接暴力的方式是使用JsonPath 访问read静态方法
            String json = "{" +
                    "\"lemon\":{\"teachers\":[{\"id\":\"101\",\"name\":\"诸葛\",\"addr\":\"昭君\",\"age\":25}" +
                    ",{\"id\":\"102\",\"name\":\"赵云\",\"age\":28}" +
                    ",{\"id\":\"103\",\"name\":\"梦琪\",\"addr\":\"上路\",\"age\":16}" +
                    ",{\"id\":\"104\",\"name\":\"尚香\",\"addr\":\"下路\",\"age\":29}]" +
                    ",\"salesmans\":[{\"id\":\"105\",\"name\":\"张飞\",\"age\":17}" +
                    ",{\"id\":\"106\",\"name\":\"关羽\",\"age\":27}]}" +
                    ",\"avg\":25}";
            List<String> authors = JsonPath.read(json, "$.lemon.teachers[*].name");
            log.info("authors:" + authors);
        }

        {
            //jsonpath还提供一些简单对象的映射,如将一个时间戳读取解析为java.util.Date对象
            String json = "{\"date_as_long\" : 1411455611975}";
            Date date = JsonPath.parse(json).read("$['date_as_long']", Date.class);
            log.info("date:" + date);
        }

        {
            //将jsonPath映射输出为pojo对象
            String userJson = "{'id':1,'name':'happy','age':25}";
            Hello user = JsonPath.parse(userJson).read("$", Hello.class);
            log.info("user:" + user);
        }

posted @ 2021-05-21 11:41  草木物语  阅读(532)  评论(0编辑  收藏  举报