在C語言中,解析JSON數據是非常常見的需求。為了方便解析JSON數據,我們可以使用一些現成的開源C JSON解析類庫。
#include "cjson/cJSON.h" int main() { // 簡單例子:解析JSON字符串 char* json_str = "{\"name\":\"Json\",\"age\":20,\"skills\":[\"programming\",\"swimming\"]}"; cJSON* root = cJSON_Parse(json_str); // 根據key獲取value,需要注意cJSON_GetObjectItem返回值為cJSON類型 cJSON* name = cJSON_GetObjectItem(root, "name"); cJSON* age = cJSON_GetObjectItem(root, "age"); printf("name=%s, age=%d\n", name->valuestring, age->valueint); // 獲取數組對象 cJSON* skills = cJSON_GetObjectItem(root, "skills"); int skill_num = cJSON_GetArraySize(skills); for (int i = 0; i< skill_num; i++) { cJSON* skill = cJSON_GetArrayItem(skills, i); printf("skill[%d]=%s\n", i, skill->valuestring); } cJSON_Delete(root); return 0; }
在以上代碼中,我們使用了cJSON_Parse函數將JSON字符串轉為cJSON格式,然后使用cJSON_GetObjectItem函數根據key獲取value,這里需要注意cJSON_GetObjectItem返回值為cJSON類型,需要根據實際情況使用相應的value類型進行獲取。
同時,如果需要獲取JSON中的數組對象,可以使用cJSON_GetArrayItem函數獲取指定位置的數組元素,或者使用cJSON_GetArraySize函數獲取數組長度。
最后,我們需要調用cJSON_Delete函數釋放cJSON格式數據占用的空間。
上一篇html屏幕自動流動代碼
下一篇python 拆包粘包