JsonPath对于解析Json格式的数据来说非常简单,比如有下面这样的Json数据:

 {"lotto":{
"lottoId":5,
"winning-numbers":[2,45,34,23,7,5,3],
"winners":[{
"winnerId":23,
"numbers":[2,45,34,23,3,5]
},{
"winnerId":54,
"numbers":[52,3,12,11,18,22]
}]
}
}

下面是一些简单的使用实例:

 //这里的lottoJson代表了上面所说的json数据
JsonPath jsonPath = new JsonPath(lottoJson); // 获取lottoId
int lottoId = jsonPath.getInt("lotto.lottoId"); // 获取winning-numbers列表
List<string> winningNumbers = jsonPath.get("lotto.winning-numbers"); // 下面的语句会返回一个list,list中包含23,54
List<integer> winningNumbers = jsonPath.get("lotto.winners.winnerId");

从上面的例子中可以看到所有的获取路径中我们都重复使用了lotto,为了避免这个问题,我们可以设置一个根路径(root path):

  //这里lottoJson代表上面的json数据
JsonPath jsonPath = new JsonPath(lottoJson);
//设置根路径
jsonPath.setRoot("lotto"); // 获取lottoId
int lottoId = jsonPath.getInt("lottoId"); //获取winning-numbers列表
List<string> winningNumbers = jsonPath.get("winning-numbers"); // 下面的语句将返回一个list,list中包含23,54
List<integer> winningNumbers = jsonPath.get("lotto.winners.winnerId");

如果你只是对提取一个单一的值感兴趣,你还可以这样做:

 // "from"是从JsonPath中静态导入的
int lottoId = from(lottoJson).getInt("lotto.lottoId");

你也可以做一些复杂的操作,比如求winners.numbers的和:

 int sumOfWinningNumbers = from(lottoJson).
getInt("lotto.winning-numbers.sum()");

或者是找出所有大于10并且winnerId=23的number:

 // 返回结果是包含45,34 and 23的list
List<integer> numbers = from(lottoJson).getList(
"lotto.winners.find {it.winnerId == 23}.numbers.findAll {it > 10}",
Integer.class);

rest-assured的JsonPath使用方法总结的更多相关文章

  1. JSONPATH使用方法

    如下的json: { "store": { "book": [ { "category": "reference", & ...

  2. Python爬虫(十六)_JSON模块与JsonPath

    本篇将介绍使用,更多内容请参考:Python学习指南 数据提取之JSON与JsonPATH JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是的人们很容易 ...

  3. 9.json和jsonpath

    数据提取之JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适 ...

  4. python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(2)

    上半部分内容链接 : https://www.cnblogs.com/lowmanisbusy/p/9069330.html 四.json和jsonpath的使用 JSON(JavaScript Ob ...

  5. python 数据提取之JSON与JsonPATH

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适用于进行数据交互的场景,比如网站前台与 ...

  6. 爬虫——json模块与jsonpath模块

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适用于进行数据交互的场景,比如网站前台与后 ...

  7. Python爬虫开发【第1篇】【Json与JsonPath】

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适用于进行数据交互的场景,比如网站前台与 ...

  8. Json与JsonPath

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因为它良好的可读性与易于机器进行解析和生成等特性,在当前的数据整理和收集中得到了广泛的应用. JSON和XM ...

  9. 七、数据提取之JSON与JsonPATH

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适用于进行数据交互的场景,比如网站前台与 ...

随机推荐

  1. Python父类调用子类

    首先说明,上面的标题其实是不正确的,Python是一门解释型.动态数据类型的高级语言,运行时,动态判断调用对象,其实还是子类自己在调用自己的方法或属性. 举个例子(copy过来的):SocketSer ...

  2. 在Sqlserver中使用Try Catch

      创建错误日志表: CREATE TABLE ErrorLog(errNum INT,ErrSev NVARCHAR(1000),ErrState INT,ErrProc NVARCHAR(1000 ...

  3. Python学习笔记_Python向Excel写入数据

    实验环境 1.OS:Win 10 64位 2.Python 3.7 3.如果没有安装xlwt库,则安装:pip install xlwt 下面是从网上找到的一段代码,网上这段代码,看首行注释行,是在L ...

  4. HighCharts SVN IReport进行PDF报表设计--模板

    BOS物流项目笔记第十五天 HIghcharts是很强大的图表绘制插件,它是基于纯js绘制的.当然地,对于图表也会有很多操作了.下面就我工作时遇到的一些比较常见的highcharts的操作进行小结,不 ...

  5. mybatis学习笔记 spring与mybatis整合

    转载自http://blog.csdn.net/naruto_Mr/article/details/48239357 1.创建web工程,导入spring依赖包与mybatis依赖包,还需要mybat ...

  6. SqlDataAdapter 批量更新数据库表

    在数据库中批量插入数据许多人都已经了解了,就是使用.net 中的SqlBulkCopy对象(MSDN详解).我们在做评教系统的时候使用过这个对象,它能将数据表批量导入到数据库中,效率比单条插入数据效率 ...

  7. ROS naviagtion analysis: costmap_2d--Costmap2D

    博客转载自:https://blog.csdn.net/u013158492/article/details/50492506 Costmap2D是存储地图数据的父类.真正的地图数据就存储在数据成员u ...

  8. Luogu 4951 [USACO 2001 OPEN]地震

    水个博客玩. $01$分数规划. 题目要求$\frac{F - \sum_{i = 1}^{n}C_i}{T_i}$最大,设$\frac{F - \sum_{i}C_i}{T_i} \geq e$,移 ...

  9. pyinstaller生成exe可执行程序

    1安装 略 2执行 pyinstaller –F test.py 报错: Pyinstaller: cx_Oracle.InterfaceError: Unable to acquire Oracle ...

  10. 登录xdebug

    1.配置 2.先不打断点,调至登录页面 3.在登录必经过处打断点,访问页面输入账号密码点击登录,进入代码追踪模式