JsonPath

Posted 草木物语

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
        }

以上是关于JsonPath的主要内容,如果未能解决你的问题,请参考以下文章

带有JSONPath的JSON.NET SelectToken

针对另一个表达式的JSONPath或JMESPath过滤

JsonPath使用说明

Json对象中取Value值方式_jsonPath

Hyperledger Fabric:使用 JsonPath 将新组织添加到现有通道

爬虫进阶数据提取-jsonpath模块