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 進行測試。