欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c語言json解析數(shù)據(jù)

林雅南1年前7瀏覽0評論

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庫在使用前需要先進行安裝。