在C語言中,實體類的概念并不是很普遍,但有時我們也會需要將數據轉換為JSON格式,便于傳輸和存儲。這時候,我們可以利用結構體與JSON之間的轉換庫來實現。
現在我們有一個如下所示的結構體:
typedef struct Person { char* name; int age; char* gender; } Person;
我們希望將這個結構體轉換為JSON格式,我們可以使用以下代碼:
#include "cJSON.h" char* person_to_json(Person* person) { cJSON* root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", person->name); cJSON_AddNumberToObject(root, "age", person->age); cJSON_AddStringToObject(root, "gender", person->gender); char* json_string = cJSON_Print(root); cJSON_Delete(root); return json_string; }
在這段代碼中,我們使用了cJSON庫來創建JSON對象,并使用cJSON_AddXXXToObject()函數向其中添加屬性。最后,我們使用cJSON_Print()函數將JSON對象轉換為字符串,并使用cJSON_Delete()函數釋放內存。
轉換后的JSON字符串將會是這樣的:
{ "name": "張三", "age": 18, "gender": "男" }
當然,我們也可以將JSON字符串轉換回結構體:
Person* person_from_json(char* json_string) { cJSON* root = cJSON_Parse(json_string); Person* person = malloc(sizeof(Person)); person->name = cJSON_GetObjectItem(root, "name")->valuestring; person->age = cJSON_GetObjectItem(root, "age")->valueint; person->gender = cJSON_GetObjectItem(root, "gender")->valuestring; cJSON_Delete(root); return person; }
在這段代碼中,我們使用cJSON_Parse()函數將JSON字符串解析為JSON對象,并使用cJSON_GetObjectItem()函數獲取屬性值,然后將其存入結構體中。同樣,我們在最后使用cJSON_Delete()函數釋放內存。
總的來說,使用cJSON庫可以方便地實現C語言與JSON格式之間的轉換,為我們處理數據提供便利。