跳至主要內容
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 進行測試。

是否回答了您的問題?