在C語言中,我們經常需要將JSON格式的字符串轉化成實體以進行相關操作。使用C語言進行JSON數據的解析和轉換,主要是通過第三方庫進行實現。其中比較著名的是 cJSON 庫。
#include#include #include "cJSON.h" int main() { char *json_str = "{\"name\":\"張三\",\"age\":20,\"friends\":[\"李四\",\"王五\"]}"; cJSON *json_root = cJSON_Parse(json_str); if (json_root == NULL) { printf("JSON 數據解析失敗\n"); return -1; } cJSON *name_item = cJSON_GetObjectItem(json_root, "name"); if (name_item == NULL) { printf("JSON 數據格式錯誤,未找到name字段\n"); cJSON_Delete(json_root); return -1; } char *name = cJSON_GetStringValue(name_item); printf("name: %s\n", name); cJSON *age_item = cJSON_GetObjectItem(json_root, "age"); if (age_item == NULL) { printf("JSON 數據格式錯誤,未找到age字段\n"); cJSON_Delete(json_root); return -1; } int age = cJSON_GetNumberValue(age_item); printf("age: %d\n", age); cJSON *friends_item = cJSON_GetObjectItem(json_root, "friends"); if (friends_item == NULL) { printf("JSON 數據格式錯誤,未找到friends字段\n"); cJSON_Delete(json_root); return -1; } cJSON *friend_item = NULL; cJSON_ArrayForEach(friend_item, friends_item) { char *friend_name = cJSON_GetStringValue(friend_item); printf("friend: %s\n", friend_name); } cJSON_Delete(json_root); return 0; }
上述代碼首先定義一個JSON格式的字符串,然后使用 cJSON_Parse 函數將其轉化成 cJSON 對象,接著通過 cJSON_GetObjectItem 函數獲取json_root對象中的各個字段,最后輸出對應字段的值。