C JSON序列化是將C語(yǔ)言中的數(shù)據(jù)轉(zhuǎn)換為JSON格式的過程。在C語(yǔ)言中,我們可以使用一些開源的JSON庫(kù)來進(jìn)行序列化操作,例如cJSON庫(kù)。
// 示例數(shù)據(jù)
struct student {
char *name;
int age;
int score[3];
};
struct student s = {
"Tom",
18,
{90, 80, 95}
};
// cJSON序列化
cJSON *jsonObj = cJSON_CreateObject();
cJSON_AddStringToObject(jsonObj, "name", s.name);
cJSON_AddNumberToObject(jsonObj, "age", s.age);
cJSON *scoreArray = cJSON_CreateArray();
for (int i = 0; i< 3; ++i) {
cJSON_AddNumberToObject(scoreArray, NULL, s.score[i]);
}
cJSON_AddItemToObject(jsonObj, "score", scoreArray);
char *jsonStr = cJSON_Print(jsonObj);
// 輸出結(jié)果:{"name":"Tom","age":18,"score":[90,80,95]}
上述代碼中,我們首先定義了一個(gè)結(jié)構(gòu)體來保存數(shù)據(jù),其中包含了學(xué)生的姓名、年齡以及成績(jī)。接著使用cJSON庫(kù)的相關(guān)API構(gòu)造了一個(gè)JSON對(duì)象,并將結(jié)構(gòu)體中的數(shù)據(jù)填充到該對(duì)象中。最后通過cJSON_Print函數(shù)將該JSON對(duì)象序列化為字符串。
在實(shí)際開發(fā)中,我們常常需要將C語(yǔ)言中的復(fù)雜數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為JSON格式的數(shù)據(jù),例如鏈表、樹等。對(duì)于這些數(shù)據(jù)結(jié)構(gòu),我們可以通過遞歸方式進(jìn)行序列化操作,具體實(shí)現(xiàn)方法與上述示例類似。