C 對象數(shù)組轉(zhuǎn) JSON 字符串?dāng)?shù)組是一項非常實用的技術(shù),在處理一些數(shù)據(jù)時十分常見。下面我們將詳細(xì)介紹如何實現(xiàn) C 對象數(shù)組轉(zhuǎn) JSON 字符串?dāng)?shù)組。
首先,我們需要導(dǎo)入 JSON 庫。在 C 語言中,最常用的 JSON 庫是 cJSON。
#include "cJSON.h"
接下來,我們聲明一個 C 對象數(shù)組:
typedef struct Person { char* name; int age; } Person; Person people[] = { {"Tom", 20}, {"Mary", 25}, {"John", 30} };
現(xiàn)在我們已經(jīng)有了一個 C 對象數(shù)組,需要將其轉(zhuǎn)成 JSON 字符串?dāng)?shù)組。我們可以使用 cJSON 庫中的 cJSON_CreateArray() 函數(shù)來創(chuàng)建一個 JSON 數(shù)組,并遍歷 C 對象數(shù)組來將每個對象轉(zhuǎn)成 JSON 字符串,并添加到 JSON 數(shù)組中:
cJSON* jsonArr = cJSON_CreateArray(); for (int i = 0; i < sizeof(people) / sizeof(people[0]); i++) { cJSON* jsonObj = cJSON_CreateObject(); cJSON_AddStringToObject(jsonObj, "name", people[i].name); cJSON_AddNumberToObject(jsonObj, "age", people[i].age); char* jsonString = cJSON_Print(jsonObj); cJSON_AddItemToArray(jsonArr, cJSON_CreateString(jsonString)); free(jsonString); cJSON_Delete(jsonObj); //釋放內(nèi)存 }
最后,我們需要將 JSON 數(shù)組轉(zhuǎn)成 JSON 字符串。可以使用 cJSON 庫中的 cJSON_Print() 函數(shù)將 JSON 數(shù)組轉(zhuǎn)成 JSON 字符串:
char* result = cJSON_Print(jsonArr);
至此,我們已經(jīng)成功實現(xiàn)了 C 對象數(shù)組轉(zhuǎn) JSON 字符串?dāng)?shù)組。使用以上代碼可以將上述 C 對象數(shù)組轉(zhuǎn)成以下 JSON 字符串?dāng)?shù)組:
[ "{"name":"Tom","age":20}", "{"name":"Mary","age":25}", "{"name":"John","age":30}" ]