JSON是一種輕量級的數(shù)據(jù)交換格式,與XML相比,它更簡潔、易讀、易寫,使用更方便。
C語言是一種強大的編程語言,被廣泛應(yīng)用于系統(tǒng)編程、網(wǎng)絡(luò)通信、嵌入式系統(tǒng)等領(lǐng)域。在處理JSON數(shù)據(jù)時,C語言也有自己的解析庫。
#include <stdio.h> #include <stdlib.h> #include <jansson.h> int main() { //JSON字符串 char *json_string = "{\"name\":\"Tom\",\"age\":18,\"address\":{\"province\":\"Guangdong\",\"city\":\"Guangzhou\"}}"; //解析JSON字符串 json_error_t error; json_t *json = json_loads(json_string, 0, &error); if(!json) { printf("解析JSON字符串失敗:%s\n", error.text); return -1; } //獲取JSON對象中的數(shù)據(jù) json_t *name = json_object_get(json, "name"); json_t *age = json_object_get(json, "age"); json_t *address = json_object_get(json, "address"); json_t *province = json_object_get(address, "province"); json_t *city = json_object_get(address, "city"); //判斷數(shù)據(jù)類型并獲取對應(yīng)的值 char *name_value = NULL; if(json_is_string(name)) { name_value = json_string_value(name); } int age_value = 0; if(json_is_integer(age)) { age_value = json_integer_value(age); } char *province_value = NULL; if(json_is_string(province)) { province_value = json_string_value(province); } char *city_value = NULL; if(json_is_string(city)) { city_value = json_string_value(city); } //輸出解析結(jié)果 printf("姓名:%s\n", name_value); printf("年齡:%d\n", age_value); printf("地址:%s %s\n", province_value, city_value); //釋放資源 json_decref(json); return 0; }
上述代碼使用了jansson庫解析JSON數(shù)據(jù),首先調(diào)用json_loads函數(shù)將JSON字符串加載到內(nèi)存中,然后通過調(diào)用json_object_get函數(shù)獲取JSON對象中的數(shù)據(jù),并使用json_is_函數(shù)判斷數(shù)據(jù)類型,再調(diào)用相應(yīng)的json_函數(shù)獲取對應(yīng)的值。
需要注意的是,jansson庫在使用前需要先進行安裝。
上一篇vue 獲取鍵盤高度
下一篇c語言json編寫