在C語言中讀取JSON格式的數據,需要借助第三方庫進行解析。目前常用的有cJSON、Jansson等庫。
下面以cJSON為例,介紹如何在C語言中讀取JSON格式的數據。
// 示例JSON格式數據 { "name": "小明", "age": 18, "sex": "male", "hobby": ["basketball", "football"], "address": { "province": "廣東", "city": "廣州" } } // 引入cJSON頭文件 #include "cJSON.h" // 讀取JSON格式數據 char* json_data = "{...}"; // 假設已有JSON格式數據,存儲在json_data字符串中 cJSON* root = cJSON_Parse(json_data); // 解析JSON字符串 // 獲取數據 cJSON* name = cJSON_GetObjectItem(root, "name"); // 獲取name字段 cJSON* age = cJSON_GetObjectItem(root, "age"); // 獲取age字段 cJSON* hobby = cJSON_GetObjectItem(root, "hobby"); // 獲取hobby字段(數組類型) cJSON* address = cJSON_GetObjectItem(root, "address"); // 獲取address字段(對象類型) // 讀取數據 char* name_str = cJSON_GetStringValue(name); // 獲取name字段的字符串值 int age_num = cJSON_GetNumberValue(age); // 獲取age字段的數值 int hobby_array_size = cJSON_GetArraySize(hobby); // 獲取hobby字段的數組元素個數 cJSON* hobby_item = cJSON_GetArrayItem(hobby, 0); // 獲取hobby字段的第一個元素 char* address_obj_str = cJSON_Print(address); // 將address字段的對象類型轉化為字符串表示 // 釋放內存 cJSON_Delete(root); // 刪除root對象,同時也會刪除其子對象
通過以上代碼可以看出,cJSON在使用過程中需要進行解析、獲取和讀取等多個步驟,而不是僅僅進行讀取操作。