JsonPath 运算符使用

秒速五厘米 2023-02-27 12:10 11阅读 0赞

背景

因为之前用到Jmeter的Json 提取器涉及到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类型,如可以是比较表达式或者逻辑表达式

JsonPath案例

  1. {
  2. "lemon": {
  3. "teachers": [{
  4. "id": "101",
  5. "name": "华华",
  6. "addr": "湖南长沙",
  7. "age": 25
  8. },
  9. {
  10. "id": "102",
  11. "name": "韬哥",
  12. "age": 28
  13. },
  14. {
  15. "id": "103",
  16. "name": "Happy",
  17. "addr": "广东深圳",
  18. "age": 16
  19. },
  20. {
  21. "id": "104",
  22. "name": "歪歪",
  23. "addr": "广东广州",
  24. "age": 29
  25. }
  26. ],
  27. "salesmans": [{
  28. "id": "105",
  29. "name": "毛毛",
  30. "age": 17
  31. },
  32. {
  33. "id": "106",
  34. "name": "大树",
  35. "age": 27
  36. }
  37. ]
  38. },
  39. "avg": 25
  40. }

JsonPath例子及说明












































































JsonPath 路径说明
$.lemon.teachers[].name 获取所有老师的的名称
$..name 获取所有人的名称
$.lemon. 所有的老师和销售
$.lemon..age 所有人的年龄
$..age 所有人的年龄
$.lemon.teachers[*].age 所有老师的年龄
$.lemon.teachers[3] 索引为3(第4个)老师的信息
$..teachers[3] 索引为3(第4个)老师的信息
$.lemon.teachers[-2] 倒数第2个老师的信息
$..teachers[-2] 倒数第2个老师的信息
$..teachers[1,2] 第2到第3个老师的信息
$..teachers[:2] 索引0(包含)到索引2(不包含)的老师信息
$..teachers[1:3] 索引1(包含)到索引3(不包含)的老师信息
$..teachers[-2:] 最后的两个老师的信息
$..teachers[2:] 索引2开始的所有老师信息
$..teachers[?(@.addr)] 所有包含地址的老师信息(jsonpath_rw不支持)
$.lemon.teachers[?(@.age < 20)] 所有年龄小于20的年龄信息(jsonpath_rw不支持)

更多jsonpath_rw用法参考:

https://pypi.org/project/jsonpath-rw/

发表评论

表情:
评论列表 (有 0 条评论,11人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JsonPath 运算符使用

    背景 因为之前用到Jmeter的Json 提取器涉及到JsonPath的使用,因此查找了一些文章,将里面的精华部分运算符的使用提取出来记录以下,方便自己以后使用。 J