C語言與JSON轉換是非常常見的操作,XML也是同理,這里主要介紹一下使用 C 語言將 JSON 轉換為對象的方法。其中 CJSON 是一個非常常用的庫,它可以將 JSON 轉換為 C 語言的數據結構。
#include "cJSON.h" #include <stdio.h> int main() { char *json = "{\"name\": \"Tom\", \"age\": 18, \"gender\": \"male\"}"; cJSON *root = cJSON_Parse(json); if (root == NULL) { printf("parse json error\n"); return -1; } cJSON *name = cJSON_GetObjectItem(root, "name"); if (name != NULL && name->type == cJSON_String) { printf("name: %s\n", name->valuestring); } cJSON *age = cJSON_GetObjectItem(root, "age"); if (age != NULL && age->type == cJSON_Number) { printf("age: %d\n", age->valueint); } cJSON *gender = cJSON_GetObjectItem(root, "gender"); if (gender != NULL && gender->type == cJSON_String) { printf("gender: %s\n", gender->valuestring); } cJSON_Delete(root); return 0; }
上述代碼中,我們首先定義了一個 JSON 字符串,并使用 cJSON_Parse 將其轉換為 cJSON 對象。然后通過 cJSON_GetObjectItem 函數獲取 JSON 對象中的屬性,并判斷屬性的類型,最后輸出屬性的值。
cJSON 還支持將 C 語言數據結構轉換為 JSON 字符串。例如:
cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "Tom"); cJSON_AddNumberToObject(root, "age", 18); cJSON_AddStringToObject(root, "gender", "male"); char *json = cJSON_PrintUnformatted(root); printf("%s\n", json); free(json); cJSON_Delete(root);
上述代碼中,我們首先創建了一個 cJSON 對象,并使用 cJSON_AddStringToObject 和 cJSON_AddNumberToObject 函數向其添加屬性。然后使用 cJSON_PrintUnformatted 將數據轉換為 JSON 字符串,并輸出。
總體來說,cJSON 是使用 C 語言解析和生成 JSON 的一種非常方便的庫,可以在很多項目中使用。