在進行網絡數據交互過程中,經常需要使用到JSON格式的數據傳輸與解析,C語言作為一門底層語言,也提供了相應的JSON解析庫。本文將會介紹如何使用C語言來解析JSON格式的數據。
#include <stdio.h>
#include <jansson.h>
int main()
{
const char *json_string = "{"name": "小明", "age": 18, "address": {"province": "廣東省", "city": "深圳市"}}";
json_t *root;
json_error_t error;
root = json_loads(json_string, 0, &error);
if(!root)
{
printf("解析JSON數據失敗:%s\n", error.text);
return -1;
}
json_t *name = json_object_get(root, "name");
printf("名字:%s\n", json_string_value(name));
json_t *age = json_object_get(root, "age");
printf("年齡:%d\n", json_integer_value(age));
json_t *address = json_object_get(root, "address");
json_t *province = json_object_get(address, "province");
printf("省份:%s\n", json_string_value(province));
json_t *city = json_object_get(address, "city");
printf("城市:%s\n", json_string_value(city));
json_decref(root);
return 0;
}
代碼的主要功能是解析一個JSON字符串,獲取其中的數據,并輸出到控制臺,由于使用了第三方庫jansson.h,所以需要在代碼中引入相應的頭文件。
json_loads函數將JSON字符串轉換成一個JSON對象,如果返回值為NULL,則說明轉換失敗,此時需要通過json_error_t結構體獲取錯誤信息。
json_object_get函數可以根據鍵名獲取JSON對象中指定的值,需要注意的是,獲取到的JSON對象還需要根據具體的類型來進行進一步操作。
在使用完畢后,需要通過json_decref函數來釋放占用的內存空間,以避免內存泄漏的問題。