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