Jsonpath语法

2022-11-17 11:10:01 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

JsonPath用法示例

  • 操作符

符号

描述

$

查询的根节点对象,用于表示一个json数据,可以是数组或对象

@

过滤器(filter predicate)处理的当前节点对象

*

获取所有节点

.

获取子节点

递归搜索,筛选所有符合条件的节点

?()

过滤器表达式,筛选操作

[start:end]

数组片段,区间为[start,end),不包含end

[A]或[A,B]

迭代器下标,表示一个或多个数组下标

  • 函数

可以在JsonPath表达式执行后进行调用,其输入值为表达式的结果。

名称

描述

min()

获取数值类型数组的最小值

max()

获取数值类型数组的最大值

length()

获取数值类型数组的长度,例如$.data.length()

  • 过滤器

过滤器是用于过滤数组的逻辑表达式。

操作符

描述

==

等于

!=

不等于

<

小于

in

所属符号,例如[?(@.type in [“小雨”,“中到大雨”])]

nin

排除符号

=~

判断是否符合正则表达式,例如[?(@.type =~ /^小雨.*/)]

响应体:
代码语言:javascript复制
BODY
{
   "code" : 200,
   "msg" : "成功!",
   "data" : {
      "yesterday" : {
         "date" : "13日星期一",
         "high" : "高温 23℃",
         "fx" : "东北风",
         "low" : "低温 18℃",
         "fl" : "<![CDATA[3-4级]]>",
         "type" : "小雨"
      },
      "city" : "杭州",
      "aqi" : null,
      "forecast" : [
         {
            "date" : "14日星期二",
            "high" : "24",
            "fengli" : "<![CDATA[3-4级]]>",
            "low" : "18",
            "fengxiang" : "东北风",
            "type" : "多云"
         },
         {
            "date" : "15日星期三",
            "high" : "22",
            "fengli" : "<![CDATA[3-4级]]>",
            "low" : "19",
            "fengxiang" : "东北风",
            "type" : "中到大雨"
         },
         {
            "date" : "16日星期四",
            "high" : "25",
            "fengli" : "<![CDATA[<3级]]>",
            "low" : "19",
            "fengxiang" : "东北风",
            "type" : "多云"
         },
         {
            "date" : "17日星期五",
            "high" : "30",
            "fengli" : "<![CDATA[<3级]]>",
            "low" : "22",
            "fengxiang" : "无持续风向",
            "type" : "小雨"
         },
         {
            "date" : "18日星期六",
            "high" : "33",
            "fengli" : "<![CDATA[<3级]]>",
            "low" : "19,
            "fengxiang" : "无持续风向",
            "type" : "多云"
         }
      ],
      "ganmao" : "各项气象条件适宜,无明显降温过程,发生感冒机率较低。",
      "wendu" : "21"
   }
}

用法示例:
  • 表达式:$…*

表示获取是所有的返回值。

  • 表达式:.data.forecast[*].type 或 .data…type

表示获取的是data下forecast数组中所有的type字段值。获取值为:[“多云”,“中到大雨”,“多云”,“小雨”,“多云”]

  • 表达式:$.data.forecast.length()

表示获取的是data下forecast数组长度。获取值为:5

  • 表达式:$.data.forecast[?(@.type == “小雨”)].date

表示获取的是data下forecast数组中天气类型为“小雨”的日期。获取值为:[“17日星期五”]

  • 表达式:$.data.forecast[?(@.type =~ /^小雨.*/)].date

表示以正则表达式过滤获取的是data下forecast数组中有“小雨”的日期。获取值为:[“15日星期三”]

  • 表达式:$.data.forecast[?((@.high <= “30”)&&(@.high >= “15”))].date

表示获取的是data下forecast数组中高温温度在25℃~30℃之间的日期。获取值为:[“16日星期四”,“17日星期五”]

  • 表达式:.data.forecast[?((@.type == “小雨”)||(@.type == “中到大雨”))].date 或 .data.forecast[?(@.type in [“小雨”,“中到大雨”])].date

表示获取的是data下forecast数组中天气类型为“小雨”或“中到大雨”的日期。获取值为:[“15日星期三”,“17日星期五”]

可以使用小工具验证你的表达式哦~ http://jsonpath.herokuapp.com/?path=$.store.book[

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/210457.html原文链接:https://javaforall.cn

0 人点赞