C語(yǔ)言是一門廣泛使用的編程語(yǔ)言,它具有高效、靈活和功能強(qiáng)大的特點(diǎn),而數(shù)組是C語(yǔ)言中最常用的數(shù)據(jù)類型之一。在C語(yǔ)言中,我們可以使用數(shù)組來(lái)實(shí)現(xiàn)JSON數(shù)據(jù)結(jié)構(gòu)。JSON是一種輕量級(jí)的數(shù)據(jù)格式,它非常適合在網(wǎng)絡(luò)應(yīng)用中傳輸數(shù)據(jù)。下面我們來(lái)看一下如何使用C語(yǔ)言中的數(shù)組來(lái)實(shí)現(xiàn)JSON數(shù)據(jù)結(jié)構(gòu)。
#include <stdio.h> #include <string.h> #define MAX_JSON_LEN 1024 typedef struct { char key[20]; char value[50]; } json_obj; typedef struct { json_obj objs[10]; int len; } json; int json_add(json* j, char* key, char* val) { if (j->len >= 10) return -1; json_obj obj; strcpy(obj.key, key); strcpy(obj.value, val); j->objs[j->len] = obj; j->len++; return 0; } void json_serialize(json* j, char* buf) { int i; char json_str[MAX_JSON_LEN] = "{"; for (i = 0; i< j->len; i++) { strcat(json_str, "\""); strcat(json_str, j->objs[i].key); strcat(json_str, "\":\""); strcat(json_str, j->objs[i].value); if (i == j->len - 1) { strcat(json_str, "\"}"); } else { strcat(json_str, "\","); } } strcpy(buf, json_str); } int main() { json j; j.len = 0; json_add(&j, "name", "Tom"); json_add(&j, "age", "25"); char buf[MAX_JSON_LEN]; json_serialize(&j, buf); printf("%s\n", buf); return 0; }
上面的代碼定義了兩個(gè)結(jié)構(gòu)體,json_obj表示JSON對(duì)象,包含鍵和值,json表示JSON數(shù)組,它包含一組JSON對(duì)象,以及數(shù)組長(zhǎng)度。我們通過(guò)實(shí)現(xiàn)json_add函數(shù)和json_serialize函數(shù),來(lái)實(shí)現(xiàn)向JSON數(shù)組中添加JSON對(duì)象和序列化JSON數(shù)組為JSON字符串的功能。在main函數(shù)中,我們可以看到如何添加一組JSON對(duì)象,并將JSON數(shù)組序列化為JSON字符串。最后,通過(guò)printf函數(shù),將JSON字符串輸出到控制臺(tái)。