JSONPath是一種用于從JSON(JavaScript Object Notation)數(shù)據(jù)中提取和操作數(shù)據(jù)的查詢語言。它的設(shè)計靈感來自于XML的XPath,但專門用于JSON數(shù)據(jù)結(jié)構(gòu)。
JSONPath使用美元符號($)表示JSON文檔的根元素,然后使用點號(.)或方括號([])來訪問子元素。
主要語法
$
: 根對象@
: 當(dāng)前節(jié)點*
: 通配符,表示所有對象或元素.
: 子元素..
: 遞歸下降。必要時在任何地方可以使用名稱[]
: 子元素或數(shù)組索引[start:end:step]
: 數(shù)組切片?()
: 過濾器表達式,表達式寫在括號內(nèi)
常用操作符
==
: 等于!=
: 不等于>
: 大于>=
: 大于等于<
: 小于<=
: 小于等于
示例
JSON數(shù)據(jù):
{
"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
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
JSONPath 表達式 | 說明 |
---|---|
$.store.book[*].author |
獲取所有書籍的作者 |
$..author |
獲取文檔中的所有作者 |
$.store.* |
獲取store下的所有內(nèi)容 |
$.store..price |
獲取store中所有的價格 |
$..book[2] |
獲取第三本書(索引從0開始) |
$..book[?(@.price<10)] |
獲取所有價格小于10的書 |
$..book[?(@.category=="fiction")] |
獲取所有分類為fiction的書 |
$..book[-1] |
獲取最后一本書 |
$..book[0,1] |
獲取前兩本書 |
$..book[:2] |
獲取從索引0(包含)到索引2(不包含)的所有書 |
$..book[-2:] |
獲取最后兩本書 |
$..book[?(@.isbn)] |
獲取所有有ISBN號的書 |
$.store.book[?(@.price > 10)] |
獲取store中所有價格大于10的書 |
$..book[?(@.author =~ /.*Smith/i)] |
獲取作者名字包含"Smith"的所有書(不區(qū)分大小寫) |
$..* |
獲取文檔中的所有元素 |
$..book.length() |
獲取書籍的數(shù)量 |
應(yīng)用場景
JSONPath在許多場景下非常有用,例如:
實現(xiàn)
雖然JSONPath不是一個官方標(biāo)準,但它在多種編程語言中都有實現(xiàn),如JavaScript、Python、Java等。每種語言可能有略微不同的語法或額外的功能。
注意事項
更多推薦
JSON5解析驗證
JSON Web Tokens