JSONPath表達式詳解

在處理 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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-29 14:19
下一篇 2024-12-30 16:08

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web服務器。nginx是一個高性能的反向代理web服務器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性傳感器,能夠同時測量加速度和角速度。它由三個傳感器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分佈式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25

發表回復

登錄後才能評論