JsonPath 規則詳解
JSON是一種輕量級的資料交換格式。一個序列化的對象或陣列,其中對象由鍵和鍵值組成,鍵值可以是對象、陣列、數字、字串或者 (false、null、true)中的一個。
對象的構成:{ 鍵: 鍵值 }
{“hello”:123} 在這個對象中,鍵為字串 “hello”,鍵值為數字 123;
{“hello”:null} 在這個對象中,鍵為字串 “hello”,鍵值為 null。
陣列的構成:[ 陣列 或 對象 ]
[ {“test1”:123} , {“test2”:234} ] 在這個陣列中,包含了2個對象。
當然,陣列裏面也可以同樣包含對象或陣列,對象裏面也可以包含對象或陣列。
正常的API都會給出返回的範例,我們可以在此處看到返回的資料結構:
對於返回的陣列,我們需要從中取得我們需要的資料,就需要使用JSON Path規則進行索引。
對於在JSON Path中,$表示根元素,我們根據不同的類型,採用不同的索引方式。
對於對象,我們可以給出鍵來索引值。
例如:
{“hello”:123}
我們為了取得鍵值123,可以根據鍵來索引;
$.hello 或者 $[‘hello’]
注意,如果鍵為中文,必須採用 $[‘鍵’] 的形式。
對於陣列,我們必須按順序來索引。
例如 [ {“test1”:123} , {“test2”:234} ] 我們需要索引陣列裏面第一個對象的值,則 $[0].test1;需要索引陣列裏面的第二個對象的值, $[1].test2。[0]表示索引陣列裏面的第一個對象或陣列或值,[1]表示索引陣列裏面的第二個對象或陣列或值,以此類推…
下面我們嘗試一下複雜的索引規則
{
"address" : "浙江省杭州市餘杭區文一西路969號",
"config_str" : "{\\\"side\\\":\\\"face\\\"}",
"face_rect":{
"angle": -90,
"center":{
"x" : 952,
"y" : 325.5
},
"size":{
"height":181.99,
"width":164.99
}
},
"card_region":[
{"x":165,"y":657},
{"x":534,"y":658},
{"x":535,"y":31},
{"x":165,"y":30}
],
"face_rect_vertices":[
{
"x":1024.6600341796875,
"y":336.629638671875
},
{
"x":906.66107177734375,
"y":336.14801025390625
},
{
"x":907.1590576171875,
"y":214.1490478515625
},
{
"x":1025.157958984375,
"y":214.63067626953125
}
],
"name" : "張三",
"nationality": "漢",
"num" : "1234567890",
"sex" : "男",
"birth" : "20000101",
"success" : true
}
取得 address: $.address 或 $[‘address’]
取得 card_region 裏面第一個裏面x的值:$.card_region[0].x 或 $.card_region[0]['x']
具體可以使用 https://jsonpath.com 進行測試。