C 序列化和反序列化 JSON 是一種將數據結構轉換為 JSON 格式的過程,使得數據能夠在網絡上傳輸并存儲。使用 C 語言序列化和反序列化 JSON 數據,可以使用現有的 JSON 庫。
常見的 C JSON 庫包括 cJSON 和 Jansson。cJSON 是一個輕量級的 JSON 庫,用于解析、生成 JSON 數據。Jansson 是一個更為全面的 JSON 庫,支持對 JSON 數據進行序列化和反序列化,并提供了豐富的 API。
下面是使用 cJSON 庫進行 JSON 數據的序列化和反序列化的示例代碼:
#include "cJSON.h" #include <stdio.h> int main(void) { cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "Tom"); cJSON_AddNumberToObject(root, "age", 18); char *json_str = cJSON_Print(root); printf("JSON string: %s\n", json_str); cJSON_Delete(root); root = cJSON_Parse(json_str); cJSON *name = cJSON_GetObjectItemCaseSensitive(root, "name"); cJSON *age = cJSON_GetObjectItemCaseSensitive(root, "age"); printf("Name: %s, Age: %d\n", name->valuestring, age->valueint); cJSON_Delete(root); return 0; }
該示例代碼中,首先使用 cJSON_CreateObject() 函數創建一個根節點,并添加了兩個子節點,一個字符串類型的節點和一個數字類型的節點。然后使用 cJSON_Print() 函數將根節點轉換為 JSON 字符串,并將其打印出來。
接下來,使用 cJSON_Parse() 函數將 JSON 字符串轉換為 cJSON 對象,并使用 cJSON_GetObjectItemCaseSensitive() 函數獲取指定節點的值。最后,使用 cJSON_Delete() 函數釋放創建的 cJSON 對象。
以上就是使用 C 語言進行 JSON 數據的序列化和反序列化的基本過程。在實際開發過程中,需要根據實際情況選擇合適的 JSON 庫,并結合具體的業務需求進行開發。