JsonPath 運算式可用於解析 JSON 結構的資料,官方 API 文檔:https://github.com/json-path/JsonPath,本文僅為對英文官方文檔的翻譯。
JsonPath 的根元素總是被稱為 $,無論它是一個物件還是陣列。
在 JsonPath 運算式中,可以使用點符號,例如:$.store.book[0].title;也可以使用方括號,例如:$['store']['book'][0]['title']。
$
如:store.book 或 store["book"]
如:book[0,1] 或 $..book[0].["category","author"]
如:book[0:2] 或 book[-2:0]
?()
如:book[?(@.price<10)]
如:book.* 或 book[*]
也可以和過濾結合使用,作為正則運算式的元素
如:book[?(@.author =~ /.*ees/)]
過濾器是用於篩選陣列的邏輯運算式,一個典型的過濾器是[?(@.age > 18)] ,其中,@ 表示當前正被過濾器處理的元素。透過加入邏輯運算子 && 和 || ,可以創造出更複雜的過濾器。字串的值必須使用單引號或雙引號括起來,如 ([?(@.color == 'blue')] 或[?(@.color == "blue")])。
左右相等
注:會對比資料類型,如 1 和 '1' 不相等
如:[?(@.name =~ /foo.*?/i)]
如:[?(@.size in ['S', 'M'])]
nin
左側不存在於右側
subsetof
左側是右側的子集
如:[?(@.sizes subsetof ['S', 'M', 'L'])]
anyof
左側和右側有交集
如:[?(@.sizes anyof ['M', 'L'])]
noneof
左側和右側沒有交集
如:[?(@.sizes noneof ['M', 'L'])]
size
左側和右側(數字/字串)一樣大
左側(數字/字串)為空
可以在路徑的末端呼叫函式。
min()
對於一個數值類型陣列,找到最小值
雙精度
max()
對於一個數值類型陣列,找到最大值
avg()
對於一個數值類型陣列,求平均值
stddev()
對於一個數值類型陣列,求標準差
length()
求陣列的長度
整數型態
sum()
對於一個數值類型陣列,求總和
範例:
假設有這樣一個 JSON 結構:
{ "store": { "book": [ { "category": "reference", "author": "Nigel Rees", "title": "Sayings of the Century", "price": 8.95 }, { "category": "fiction", "author": "Evelyn Waugh", "title": "Sword of Honour", "price": 12.99 }, { "category": "fiction", "author": "Herman Melville", "title": "Moby Dick", "isbn": "0-553-21311-3", "price": 8.99 }, { "category": "fiction", "author": "J. R. R. Tolkien", "title": "The Lord of the Rings", "isbn": "0-395-19395-8", "price": 22.99 } ], "bicycle": { "color": "red", "price": 19.95 } }, "expensive": 10}
$.store.book[*].author
找到 store 元素下的所有書籍,匯出他們的作者
$..author
根元素下所有的作者
$.store.*
store 元素下所有的東西,無論是書籍還是自行車
$.store..price
store 元素下的所有東西的價格
$..book[2]
第 3 本書
$..book[-2]
倒數第 2 本書
$..book[0,1]
$..book[:2]
前2本書
前2本書(注意:第一本書的索引是0)
$..book[1:2]
第2本書
$..book[-2:]
最後第2本和最後第1本書
$..book[2:]
第3到最後1本書
$..book[?(@.isbn)]
所有書籍中,含有 isbn 屬性的書籍
$.store.book[?(@.price < 10)]
所有書籍中,價格低於10的書籍
$..book[?(@.price <= $['expensive'])]
所有資料中,價格沒有超過 expensive 的書籍( expansive 的值為10)
$..book[?(@.author =~ /.*REES/i)]
找出符合正則運算式的書籍。
此正則運算式的含義:作者名以REES結尾,REES不區分大小寫
$..*
匯出根元素下的所有內容
$.store.book.length()
書籍的總數
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙