一、Jsonpath取值
取值是Jsonpath中最基本的操作,它能快速準確地獲取需要的數據。Jsonpath取值的基本語法格式如下:
$.[key1,key2,...,keyn]
其中,$表示根節點,在括弧中指定需要獲取的key,如[key1,key2,…,keyn]。下面是一個示例:
{ "person": { "name": "張三", "age": 30, "address": { "city": "北京", "street": "朝陽區" }, "phone": [ { "type": "home", "number": "010-xxxx" }, { "type": "work", "number": "020-xxxx" } ] } }
取值示例:
$.person.name // 輸出:"張三" $.person.age // 輸出:30 $.person.address.city // 輸出:"北京" $.person.phone[0].number // 輸出: "010-xxxx"
二、怎麼下載JSONPath庫
要使用Jsonpath,需要引入Jsonpath庫。可以通過以下方式安裝:
npm install jsonpath
也可以直接下載Jsonpath的js文件,然後在HTML中引用:
<script src="jsonpath.js"></script>
三、JSONPath解析JSON
Jsonpath最常見的應用是解析JSON。Jsonpath提供了一種簡潔明了的方式,讓我們能夠輕鬆地從JSON中取出需要的數據。下面是一個示例:
{ "store": { "book": [ { "title": "JavaScript權威指南", "author": "Flanagan", "year": 2006, "price": 49.99 }, { "title": "Java核心技術卷I", "author": "Cay Horstmann", "year": 2015, "price": 59.99 }, { "title": "Python基礎教程", "author": "Magnus Lie Hetland", "year": 2008, "price": 39.95 } ], "bicycle": { "color": "red", "price": 19.95 } } }
取出所有書籍的作者:
$.store.book[*].author
輸出:
[ "Flanagan", "Cay Horstmann", "Magnus Lie Hetland" ]
取出所有書籍的價格:
$.store.book[*].price
輸出:
[ 49.99, 59.99, 39.95 ]
四、生成JSONPath
生成Jsonpath有時可以幫助我們更好地理解它的取值規則。下面是一些示例:
// 取出所有書籍的作者 $.store.book[*].author // 取出第一本書的作者 $.store.book[0].author // 取出前兩本書的作者 $.store.book[:2].author // 取出最後一本書的作者 $.store.book[-1:].author // 取出價格大於50的書的作者 $.store.book[?(@.price > 50)].author
五、JSONPath邏輯運算
Jsonpath還支持邏輯運算,如「與」、「或」、「非」等。下面是一些示例:
如果我們要取出所有價格大於50且年份大於2000的書的作者:
$.store.book[?(@.price > 50 && @.year > 2000)].author
如果我們要取出價格大於50或年份大於2000的書的作者:
$.store.book[?(@.price > 50 || @.year > 2000)].author
如果我們要取出價格不等於50的書的作者:
$.store.book[?(@.price != 50)].author
六、JSONPath set
Jsonpath還支持set操作,用於更新JSON數據。set操作的語法格式如下:
$.[key1,key2,...,keyn] = value
其中,$表示根節點,在括弧中指定需要更新的key,如[key1,key2,…,keyn]。value是需要更新的值。下面是一個示例:
{ "person": { "name": "張三", "age": 30, "address": { "city": "北京", "street": "朝陽區" }, "phone": [ { "type": "home", "number": "010-xxxx" }, { "type": "work", "number": "020-xxxx" } ] } }
假設我們要將張三的年齡修改為32歲,可以使用如下Jsonpath:
$.person.age = 32
修改後的結果如下:
{ "person": { "name": "張三", "age": 32, "address": { "city": "北京", "street": "朝陽區" }, "phone": [ { "type": "home", "number": "010-xxxx" }, { "type": "work", "number": "020-xxxx" } ] } }
七、怎麼導入JSONPath庫
在Node.js中,可以通過require的方式導入Jsonpath庫,在代碼中使用:
const jsonpath = require('jsonpath');
在瀏覽器中,可以通過script標籤引入Jsonpath庫,然後使用全局變數JsonPath:
<script src="jsonpath.js"></script> // 使用全局變數JsonPath JsonPath.query(data, "$.store.book[*].author");
八、JSON Parse方法選取
除了Jsonpath之外,還有其他選取JSON數據的方法。下面給出一些示例:
方法一:使用JSON.parse方法解析JSON數據,然後使用點號和中括弧來取值。
const data = '{"person": {"name": "張三", "age": 30}}'; const obj = JSON.parse(data); console.log(obj.person.name); // 輸出:"張三" console.log(obj['person']['age']); // 輸出:30
方法二:使用Lodash庫的get方法取值。
const data = '{"person": {"name": "張三", "age": 30}}'; const obj = JSON.parse(data); console.log(_.get(obj, 'person.name')); // 輸出:"張三"
方法三:使用Axios庫發起網路請求獲取JSON數據,然後使用點號和中括弧來取值。
axios.get('/api/data').then(res => { console.log(res.data.person.name); // 輸出:"張三" console.log(res.data['person']['age']); // 輸出:30 })
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/275819.html