Jsonpath语法

JsonPath用法示例

  • 操作符
符号描述
$查询的根节点对象,用于表示一个json数据,可以是数组或对象
@过滤器(filter predicate)处理的当前节点对象
*获取所有节点
.获取子节点
递归搜索,筛选所有符合条件的节点
?()过滤器表达式,筛选操作
[start:end]数组片段,区间为[start,end),不包含end
[A]或[A,B]迭代器下标,表示一个或多个数组下标
  • 函数

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

    名称                  描述
min()获取数值类型数组的最小值
max()获取数值类型数组的最大值
length()获取数值类型数组的长度,例如$.data.length()
  • 过滤器

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

  操作符            描述
==等于
!=不等于
<小于
in所属符号,例如[?(@.type in [“小雨”,“中到大雨”])]
nin排除符号
=~判断是否符合正则表达式,例如[?(@.type =~ /^小雨.*/)]
响应体:
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[

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
JSONPath 是一种用于在 JSON 数据中定位和提取特定数据的查询语言。它类似于 XPath 对于 XML 数据的作用。以下是 JSONPath 的一些常用语法: 1. `$`:表示根节点。 2. `.`:表示当前节点。 3. `..`:表示递归下降,用于查找某个节点下的所有子孙节点。 4. `*`:表示通配符,匹配任意节点。 5. `@`:表示当前节点的属性值。 6. `[]`:用于过滤数组中的元素。 - `[0]`:表示获取数组中的第一个元素。 - `[1,2]`:表示获取数组中的第二个和第三个元素。 - `[start:end]`:表示获取数组中从 start 索引到 end 索引范围内的元素。 - `[?(expression)]`:表示根据表达式过滤数组中的元素。 7. `.` 或 `[]` 后跟属性名或索引值,用于访问对象属性或数组元素。 例如,给定以下 JSON 数据: ``` { "store": { "book": [ { "category": "fiction", "title": "Book 1" }, { "category": "fiction", "title": "Book 2" } ], "bicycle": { "color": "red", "price": 19.95 } } } ``` 可以使用以下 JSONPath 表达式来获取特定的数据: - `$.store.book[0].title`:获取第一本书的标题。 - `$.store.book[*].title`:获取所有书的标题。 - `$.store..title`:获取所有节点名为 "title" 的值。 - `$.store.book[?(@.category=='fiction')]`:根据条件获取所有类别为 "fiction" 的书。 这只是 JSONPath 的一小部分语法,你可以根据具体需求使用更复杂的表达式来查询和提取 JSON 数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值