JSON是一種輕量級的數據交互格式,常用于Web應用中的數據傳輸。在C語言中,我們可以使用一些開源的JSON庫來對JSON數據進行解析,從而提取出所需的信息。
下面是一個用C語言解析JSON數據的示例程序:
#include <stdio.h> #include <jansson.h> int main() { char *json_str = "{\"name\":\"Tom\",\"age\":21,\"hobby\":[\"basketball\",\"music\"]}"; json_error_t error; json_t *root = json_loads(json_str, 0, &error); if(root != NULL) { json_t *name = json_object_get(root, "name"); if(json_is_string(name)) { printf("Name: %s\n", json_string_value(name)); } json_t *age = json_object_get(root, "age"); if(json_is_integer(age)) { printf("Age: %d\n", (int)json_integer_value(age)); } json_t *hobby = json_object_get(root, "hobby"); if(json_is_array(hobby)) { printf("Hobby:\n"); size_t index; json_t *value; json_array_foreach(hobby, index, value) { if(json_is_string(value)) { printf("%d: %s\n", (int)index, json_string_value(value)); } } } json_decref(root); } else { printf("Error: %s\n", error.text); } return 0; }
代碼解釋:
1. #include <jansson.h> 引入JSON庫。 2. 定義json_str字符串來存放JSON數據。 3. 調用json_loads函數將JSON字符串轉換成JSON對象,如果轉換成功則返回一個json_t*類型的root指針。 4. 使用json_object_get函數獲取JSON對象的屬性值,并使用不同的json_is_*函數來判斷屬性值的類型。 5. 使用json_array_foreach函數遍歷JSON數組,獲取其中的元素。 6. 調用json_decref函數釋放JSON對象的內存空間。
使用JSON庫解析JSON數據,可以使得C語言在Web應用中處理數據變得更加方便高效。在實際應用中,我們可以根據不同的需求選擇不同的JSON庫,比如jansson、cJSON、json-c等。
上一篇c語言json加換行符
下一篇vue 網頁導出word