JSON是一種輕量級的數據交換格式,近些年來被廣泛應用于前端和后端之間的數據傳輸。C語言也有許多優秀的JSON解析庫,比如Jansson和 cJSON等。
接下來以 cjson為例,介紹如何將C語言中的結構體和數組轉換為JSON格式的字符串。
#include <stdio.h> #include <stdlib.h> #include <cjson/cJSON.h> typedef struct person { char name[20]; int age; char gender; } Person; int main() { // 創建一個Person結構體變量 Person person = {"Alex", 18, 'M'}; // 將結構體轉換為JSON格式的字符串 cJSON* json = cJSON_CreateObject(); cJSON_AddStringToObject(json, "name", person.name); cJSON_AddNumberToObject(json, "age", person.age); cJSON_AddStringToObject(json, "gender", &person.gender); char* jsonStr = cJSON_Print(json); printf("Person structure in JSON format: %s\n", jsonStr); // 釋放內存 cJSON_Delete(json); free(jsonStr); // 創建一個Person數組 Person people[3] = {{"Alex", 18, 'M'}, {"Bob", 20, 'M'}, {"Cindy", 22, 'F'}}; cJSON* jsonArray = cJSON_CreateArray(); for (int i = 0; i < 3; i++) { cJSON* item = cJSON_CreateObject(); cJSON_AddStringToObject(item, "name", people[i].name); cJSON_AddNumberToObject(item, "age", people[i].age); cJSON_AddStringToObject(item, "gender", &people[i].gender); cJSON_AddItemToArray(jsonArray, item); } char* jsonArrayStr = cJSON_Print(jsonArray); printf("Person array in JSON format: %s\n", jsonArrayStr); // 釋放內存 cJSON_Delete(jsonArray); free(jsonArrayStr); return 0; }
在上述代碼中,我們定義了一個Person結構體和一個Person數組,并使用cJSON庫中的函數將結構體和數組轉換為JSON格式的字符串。
對于結構體,我們可以使用cJSON_CreateObject()函數創建一個JSON對象,然后使用cJSON_AddStringToObject()和cJSON_AddNumberToObject()等函數將結構體的成員加入JSON中。
對于數組,我們可以使用cJSON_CreateArray()函數創建一個JSON數組對象,并使用cJSON_CreateObject()函數創建每一個JSON對象,然后將這些JSON對象加入數組中。
使用cJSON編寫JSON化的代碼可以方便地將C語言中的結構體和數組轉換為JSON格式的字符串,便于C語言和其他語言之間的數據傳輸與交換。