在處理 JSON 數據時,JSONPath 是一種非常重要的工具。它可以像 XPath 對 XML 數據操作一樣,對 JSON 數據進行篩選、遍歷和子集選擇等操作。JSONPath常見於前端和後端的開發中,尤其是在Web API返回JSON數據或者前端調用JSON接口時,都用的非常頻繁。
一、JSONPath基本語法
JSONPath 是一種路徑表達式語言,基本的語法形如 $.keyname,其中 $ 符號表示根節點,而 keyname 是要取值的字段名稱或數組下標。JSONPath 中最簡單的表達式就是 ” $ “,代表着整個 JSON 數據對象。下面我們來看看一些常用的 JSONPath 表達式:
$.store.book[*].author $.['store']['book'][*]['author'] $..author $..['author'] $['store']['book'][2]['title']
上述表達式含義分別是:
1、$.store.book[*].author —— 在 JSON 對象中,查找所有在「store」對應的 JSON 對象中的「book」對象數組裡的每一個對象的「author」屬性;
2、$.[‘store’][‘book’][*][‘author’] —— 與前者等價;
3、$..author —— 查找 JSON 對象中的「author」屬性,不限定它在哪一個對象層次之下;
4、$..[‘author’] —— 與前者等價;
5、$[‘store’][‘book’][2][‘title’] —— 返回第三個「book」對象的「title」屬性。
二、JSONPath篩選器
JSONPath 表達式還提供了一些簡單的比較運算符如 =、!=、<、、>=等等,用於篩選數據。下面是一個常見的 JSONPath 表達式:
$.store.book[?(@.price < 10)].title
這個表達式的含義是,在「store」對象的「book」數組裡找到屬性「price」的值小於 10 的對象,然後返回其「title」字段的值。
三、JSONPath遞歸下降
JSONPath 的遞歸下降操作符「..」可以遞歸地查詢一個對象所有兒子節點下的所有內容,非常方便。
$..price $..['price'] $.store..price $.['store']..['price']
這個表達式的含義是:在這個 JSON 對象里,查找「price」屬性,並且不限定在哪一個對象層次之下,只要能夠找到就返回。
四、JSONPath篩選器的其他用法
JSONPath 表達式還可以使用多種操作符來進行篩選操作,例如:
$..books[?(@.language == 'en')] $..books[?(@.price < 10 && @.category == 'children')] $..books[?(@.author =~ /.*some.*/i)]
這個表達式含義分別是:
1、$..books[?(@.language == ‘en’)] —— 查找所有圖書中,屬性「language」等於「en」的圖書;
2、$..books[?(@.price < 10 && @.category == 'children')] —— 查找所有價格小於 10,且分類為「children」的圖書;
3、$..books[?(@.author =~ /.*some.*/i)] —— 查找所有作者名稱中包含「some」的圖書,不分大小寫。
五、結束語
本文簡單介紹了 JSONPath 的一些基本語法和操作符,這些操作符使用起來非常靈活,可以滿足我們對 JSON 數據的一些非常常見的操作,如數據查詢、數據遍歷、數據篩選等操作。相信通過本文的閱讀,大家對於 JSONPath 表達式的使用會有更深的認識與掌握!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/301110.html