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); }