JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,它常用于Web應(yīng)用之間的數(shù)據(jù)傳輸。在C語言中,我們可以使用JSON-C庫來實(shí)現(xiàn)JSON字符串與對(duì)象的轉(zhuǎn)換。
// 引入json-c頭文件 #include <json-c/json.h> // 定義一個(gè)JSON字符串 const char *json_str = "{\"name\": \"小明\", \"age\": 18}"; // 將JSON字符串轉(zhuǎn)換成JSON對(duì)象 json_object *json_obj = json_tokener_parse(json_str); // 通過key獲取JSON對(duì)象的value json_object *name_obj = json_object_object_get(json_obj, "name"); json_object *age_obj = json_object_object_get(json_obj, "age"); // 將JSON對(duì)象的value轉(zhuǎn)換成對(duì)應(yīng)類型的數(shù)據(jù) const char *name = json_object_get_string(name_obj); int age = json_object_get_int(age_obj); // 輸出獲取到的數(shù)據(jù) printf("name: %s, age: %d", name, age);
在上面的代碼中,我們先定義了一個(gè)JSON字符串,再使用json_tokener_parse()函數(shù)將該字符串轉(zhuǎn)換成JSON對(duì)象。接著,通過json_object_object_get()函數(shù)獲取JSON對(duì)象中指定key的value,并使用json_object_get_string()和json_object_get_int()函數(shù)將其轉(zhuǎn)換成對(duì)應(yīng)類型的數(shù)據(jù)。最后,我們通過printf()函數(shù)將結(jié)果輸出。
在實(shí)際應(yīng)用中,我們可以將JSON字符串來自于網(wǎng)絡(luò)請(qǐng)求或者本地文件。而將JSON對(duì)象轉(zhuǎn)換成JSON字符串的操作可以借助json_object_to_json_string()函數(shù)實(shí)現(xiàn)。
// 將JSON對(duì)象轉(zhuǎn)換成JSON字符串 const char *json_str_out = json_object_to_json_string(json_obj); // 輸出轉(zhuǎn)換后的JSON字符串 printf("%s", json_str_out);
如上,我們通過json_object_to_json_string()函數(shù)將JSON對(duì)象轉(zhuǎn)換成JSON字符串,并通過printf()函數(shù)輸出。