C語言是一種高效、通用的編程語言,常常用于開發系統軟件、嵌入式系統等領域。近年來,隨著互聯網的發展,JSON成為了一種廣泛使用的數據交換格式,因此解析JSON數據在C語言開發中也變得越來越重要。下面將介紹如何使用C語言解析JSON數據源。
#include <stdio.h> #include <jansson.h> int main() { char *json_str = "{\n" " \"name\": \"張三\",\n" " \"age\": 20,\n" " \"gender\": \"male\",\n" " \"hobby\": [\"籃球\", \"足球\", \"音樂\"]\n" "}"; json_t *root; json_error_t error; root = json_loads(json_str, 0, &error); if (!root) { fprintf(stderr, "json error on line %d: %s\n", error.line, error.text); return 1; } json_t *name = json_object_get(root, "name"); json_t *age = json_object_get(root, "age"); json_t *gender = json_object_get(root, "gender"); json_t *hobby = json_object_get(root, "hobby"); printf("姓名:%s\n", json_string_value(name)); printf("年齡:%d\n", json_integer_value(age)); printf("性別:%s\n", json_string_value(gender)); int i, size; size = json_array_size(hobby); printf("愛好:"); for (i = 0; i< size; i++) { printf("%s", json_string_value(json_array_get(hobby, i))); if (i != size - 1) { printf("、"); } } printf("\n"); json_decref(root); return 0; }
上面的代碼中,首先定義了一個JSON字符串,然后使用json_loads函數將其解析為一個json_t類型的對象。如果解析出錯,會輸出錯誤信息。
接下來,使用json_object_get函數獲取JSON對象中各個屬性的值。對于字符串類型的值,可以使用json_string_value函數獲取其字符串值。對于整型類型的值,可以使用json_integer_value函數獲取其整型值。對于數組類型的值,則需要使用json_array_size和json_array_get函數獲取其中的元素,并使用json_string_value函數獲取元素的值。
最后,在使用完json_t對象后,需要使用json_decref函數對其進行釋放。