一、JsonPath語法概述
JsonPath是一種表示Json文檔中特定部分的語法。它可以幫助用戶通過類似於XPath的表達式來篩選和提取Json對象的數據。
JsonPath標準由一個或多個路徑表達式組成。每個路徑表達式從根節點開始,描述了以下內容:
- 查找Json文檔中一個或多個節點
- 訪問指定的Json節點的屬性、數組和子對象
以下是一個例子:
{ "name": "John", "age": 30, "cars": [ { "name": "Ford", "models": ["Fiesta", "Focus", "Mustang"] }, { "name": "BMW", "models": ["320", "X3", "X5"] }, { "name": "Fiat", "models": ["500", "Panda"] } ] }
使用JsonPath可以選擇如下內容:
- 所有「name」字段:$..name
- 所有「models」字段:$..models
- BWM的所有「models」字段:$..[?(@.name==’BMW’)].models
二、Json語法
在JsonPath的路徑表達式中,需要有一定的Json語法基礎。JSON(JavaScript Object Notation,JavaScript對象表示法)是一種輕量級的數據交換格式,易於閱讀和編寫。
JSON的數據結構包括:
- 對象:由花括號包裹的鍵值對集合
- 數組:由方括號包裹的值的有序集合
- 值:字符串、數字、布爾值、null、另一個對象或數組
以下是一個JSON對象的例子:
{ "name":"John", "age":30, "city":"New York" }
三、JsonPath過濾器
JsonPath語法中能夠通過方括號和一系列過濾器對Json中的值進行篩選。以下是一些常用的JsonPath過濾器:
- $:表示根節點
- /:表示選取根節點下的子節點
- *:匹配任何節點
- @:表示當前節點
- ..:向下遞歸匹配所有節點
- []:表示篩選的條件
以下是一個根據條件篩選的例子:
{ "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 } } }
以下的JsonPath會返回category是fiction的book的title和price:
$.store.book[?(@.category == 'fiction')].['title', 'price']
四、JsonPath的用法
JsonPath的用法通常分成兩種場景:
- JsonPath的查詢:根據路徑表達式查找指定數據,通常用於測試或數據分析。
- JsonPath的使用:對Json文檔應用更新/刪除操作,通常在RESTful API或其他Web服務開發中使用。
以下是一個使用JsonPath查詢的Python腳本例子:
import json import requests from jsonpath_ng import parse url = 'https://jsonplaceholder.typicode.com/users' response = requests.get(url).text data = json.loads(response) for user in data: name = parse('$..name').find(user) email = parse('$..email').find(user) print(name[0].value, email[0].value)
五、Json parse方法
Json parse方法是一種將Json字符串轉換為對象或數組的方法,通常在處理Web API響應數據時使用。
以下是一個在JavaScript中使用JSON.parse()方法的例子:
let jsonString = '{"name":"John","age":30,"city":"New York"}'; let obj = JSON.parse(jsonString); console.log(obj.name);
六、Python的Json用法
Python包含了一個內置的JSON模塊,用於在Python中讀寫JSON數據。
以下是一個使用Python操作JSON的例子:
import json user = {'name': 'John', 'age': 30, 'city': 'New York'} json_string = json.dumps(user) print(json_string)
七、Json的語法規範
雖然JSON本身沒有正式的語法規範,但很多編程語言,包括JavaScript和Python,都實現了自己的JSON解析器。
以下是一些JSON語法規則的概述:
- JSON對象使用花括號包裹,並由逗號分隔的鍵值對組成。
- 鍵必須是字符串,值可以是字符串、數字、布爾型、null、數組或另一個JSON對象。
- 鍵和字符串值必須由雙引號包裹。
- JSON數組使用方括號包裹,並由逗號分隔的值組成。
- 值可以是字符串、數字、布爾型、null、數組或另一個JSON對象。
以下是一個JSON對象的例子:
{ "name":"John", "age":30, "city":"New York" }
八、總結
本文介紹了JsonPath語法及其相關知識。通過路徑表達式,JsonPath可以快速篩選和提取Json文檔中的數據,幫助用戶在Web API和其他應用中處理JSON。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/286045.html