JSON是一種輕量級(jí)數(shù)據(jù)交換格式,被廣泛應(yīng)用于網(wǎng)絡(luò)傳輸。在LR腳本中,我們可以通過(guò)使用lr_json_get_value和lr_json_convert_string兩個(gè)函數(shù)對(duì)JSON報(bào)文進(jìn)行操作。
JSON報(bào)文通常由大括號(hào)和方括號(hào)組成。大括號(hào)表示一個(gè)對(duì)象,方括號(hào)表示一個(gè)數(shù)組。對(duì)象中包含多個(gè)鍵值對(duì),每個(gè)鍵值對(duì)之間使用逗號(hào)分隔。數(shù)組中包含多個(gè)元素,每個(gè)元素之間也使用逗號(hào)分隔。
{ "name": "John", "age": 30, "city": "New York", "phones": [ "123456789", "987654321" ], "address": { "street": "Main Street", "zip": "12345" } }
使用lr_json_convert_string函數(shù)可以將JSON報(bào)文轉(zhuǎn)換為L(zhǎng)R腳本中可讀的字符串。例如:
char* json = "{ \"name\": \"John\", \"age\": 30 }"; char* string; lr_json_convert_string(json, strlen(json), &string, NULL); lr_output_message("%s", string);
使用lr_json_get_value函數(shù)可以獲取JSON報(bào)文中的某個(gè)鍵的值。例如:
char* json = "{ \"name\": \"John\", \"age\": 30 }"; char* value; lr_json_get_value(json, strlen(json), "$.name", &value); lr_output_message("%s", value);
在lr_json_get_value函數(shù)中,"$"表示JSON報(bào)文的根節(jié)點(diǎn),".name"表示要獲取的鍵值對(duì)的鍵名。如果該鍵名對(duì)應(yīng)的值為一個(gè)對(duì)象或者數(shù)組,可以使用"."或者"[]"繼續(xù)獲取子節(jié)點(diǎn)的鍵值對(duì)。例如:
char* json = "{ \"name\": \"John\", \"phones\": [ { \"type\": \"home\", \"number\": \"123456789\" }, { \"type\": \"work\", \"number\": \"987654321\" } ] }"; char* value; lr_json_get_value(json, strlen(json), "$.phones[0].number", &value); lr_output_message("%s", value);
以上代碼可以獲取JSON報(bào)文中第一個(gè)電話號(hào)碼的值。