一、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-hk/n/275819.html
微信掃一掃
支付寶掃一掃