假設我有以下示例 JSON 回應,我想從中提取“@type”的值:
{
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"phoneNumbers": [
{
"@type" : "iPhone",
"number": "0123-4567-8888"
},
{
"@type" : "home",
"number": "0123-4567-8910"
}
]
}
使用驗證:- http://jsonpath.com/
這適用于“數字”:
$.phoneNumbers.[number]
但無法獲得“@type”的值:
$.phoneNumbers.[@type]
嘗試了多種方法,但沒有運氣。
謝謝!
編輯:- 在陣列中為“home”添加了另一個值,現在索引邏輯 [0,1] 不起作用。甚至嘗試使用 [:] 來獲取所有值,但沒有運氣。
uj5u.com熱心網友回復:
您可以閱讀本檔案:
請注意,jsonPath 的回傳值是一個陣列,也是一個有效的 JSON 結構。
所以基本上它總是回傳一個陣列。
var phoneTypes = jsonPath(json,"$.phoneNumbers.[@type]");
結果
["iPhone","home"]
如果你想要一部手機,你必須為 iPhone 使用 phoneTypes[0]
但我強烈建議您使用此代碼修復您的 json
var fixedJson= JSON.parse(JSON.stringify(json).replaceAll("\"@type\"","\"type\"" ));
在這種情況下,您可以使用真正的搜索
var homePhone = jsonPath(fixedJson,"$.phoneNumbers[?(@.type =='home')]")[0].number;
輸出
0123-4567-8910
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/426801.html
