C語言是一門廣泛應用于計算機科學和信息技術領域的編程語言,而JSON是一種輕量級的數據交換格式。在C語言中,我們可以通過轉換將C數據結構轉換為JSON對象,或者讀取JSON對象并將其轉換為C數據結構。
// 將C結構體轉換為JSON格式 #include#include #include #include typedef struct person { char name[50]; int age; } Person; int main() { // 初始化一個Person結構體 Person p = { "John Doe", 30 }; // 將Person結構體轉換為JSON cJSON* json = cJSON_CreateObject(); cJSON_AddStringToObject(json, "name", p.name); cJSON_AddNumberToObject(json, "age", p.age); printf("%s", cJSON_PrintUnformatted(json)); cJSON_Delete(json); return 0; }
上述C代碼使用了cJSON庫來創建一個包含兩個屬性(name和age)的JSON對象。首先,我們需要通過cJSON_CreateObject函數創建一個空JSON對象,然后使用cJSON_AddStringToObject和cJSON_AddNumberToObject函數添加name和age屬性。最后,我們使用cJSON_PrintUnformatted函數將生成的JSON對象格式化為字符串并輸出。
// 從JSON格式讀取C結構體 #include#include #include #include typedef struct person { char name[50]; int age; } Person; int main() { // 從JSON格式字符串中讀取Person結構體 const char* json_str = "{\"name\":\"John Doe\",\"age\":30}"; cJSON* json = cJSON_Parse(json_str); // 從JSON對象中讀取屬性值 Person p; strcpy(p.name, cJSON_GetObjectItem(json, "name")->valuestring); p.age = cJSON_GetObjectItem(json, "age")->valueint; // 輸出Person結構體 printf("Name: %s, Age: %d", p.name, p.age); cJSON_Delete(json); return 0; }
上述C代碼使用了cJSON庫從JSON格式字符串中讀取一個Person結構體。首先,我們使用cJSON_Parse函數將JSON格式字符串轉換為JSON對象。然后,我們使用cJSON_GetObjectItem函數從JSON對象中讀取name和age屬性的值,并將它們存儲到Person結構體中。最后,我們輸出Person結構體的name和age屬性值。