C解析JSON是一種非常常用的操作,因為JSON是一種輕量級的數據交換格式,它易于閱讀和編寫,也易于機器解析和生成。在這篇文章中,我們將介紹如何使用C語言解析JSON。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jansson.h>
int main() {
char *json_string = "{\"name\":\"David\",\"age\":25,\"city\":\"Beijing\",\"hobbies\":[\"reading\",\"swimming\"]}";
json_error_t error;
json_t *root = json_loads(json_string, 0, &error);
if (!root) {
printf("error: on line %d: %s\n", error.line, error.text);
exit(1);
}
json_t *name = json_object_get(root, "name");
json_t *age = json_object_get(root, "age");
json_t *city = json_object_get(root, "city");
json_t *hobbies = json_object_get(root, "hobbies");
char *name_str = (char*)json_string_value(name);
int age_int = json_integer_value(age);
char *city_str = (char*)json_string_value(city);
printf("name: %s, age: %d, city: %s\n", name_str, age_int, city_str);
int i;
for (i = 0; i < json_array_size(hobbies); i++) {
json_t *hobby = json_array_get(hobbies, i);
char *hobby_str = (char*)json_string_value(hobby);
printf("%s\n", hobby_str);
}
json_decref(root);
return 0;
}
首先,在程序中我們定義了一個JSON字符串。這個字符串包含了一個人的姓名、年齡、城市和興趣愛好。我們用json_loads()函數將這個JSON字符串解析成C語言的json_t類型,并檢查是否解析成功。
接下來,我們使用json_object_get()函數獲取了JSON對象中的各個屬性,并將它們轉換為對應的C語言類型。我們將姓名、年齡和城市都轉換成了字符串類型,并分別存儲到了相應的變量中。同時,我們也獲取了興趣愛好的數組,并使用for循環將數組中的每一項轉換成字符串類型并輸出。
最后,我們使用json_decref()函數釋放了JSON對象的內存。
通過以上代碼片段的介紹,相信大家已經清楚了如何使用C語言解析JSON數據了。
上一篇c#json壓縮