在使用C語言開發(fā)過程中,拼接嵌套JSON字符串是比較常見的需求,本文將介紹使用C語言拼接嵌套JSON字符串的方法。
首先,我們需要使用一個結(jié)構(gòu)體來存儲JSON數(shù)據(jù),如下:
typedef struct json { char *key; char *value; struct json *next; struct json *child; } json;
其中,key表示JSON數(shù)據(jù)的鍵,value表示JSON數(shù)據(jù)的值,next表示下一個節(jié)點,child表示子節(jié)點。
下面是拼接JSON字符串的函數(shù):
char *json_to_string(json *head) { char *result = (char *)malloc(sizeof(char) * BUFFER_SIZE); memset(result, 0, BUFFER_SIZE); strcat(result, "{"); int len = strlen(result); json *ptr = head; while (ptr != NULL) { char *key = ptr->key; char *value = ptr->value; if (value != NULL) { if (strlen(value) >0) { sprintf(result + len, "\"%s\":\"%s\",", key, value); } else { sprintf(result + len, "\"%s\":null,", key); } } else if (ptr->child != NULL) { sprintf(result + len, "\"%s\":%s,", key, json_to_string(ptr->child)); } ptr = ptr->next; len = strlen(result); } result[len - 1] = '}'; return result; }
該函數(shù)會遞歸調(diào)用自身,直到生成一個完整的JSON字符串。其中,如果value不為NULL且長度不為0,就將其寫入到字符串中,否則寫入null;如果存在子節(jié)點,就將子節(jié)點轉(zhuǎn)化為字符串后寫入到字符串中。
最后,我們就可以調(diào)用json_to_string函數(shù),將JSON數(shù)據(jù)轉(zhuǎn)化為字符串:
int main() { json *head = (json *)malloc(sizeof(json)); head->key = "name"; head->value = "Tom"; head->next = NULL; head->child = (json *)malloc(sizeof(json)); head->child->key = "info"; head->child->value = NULL; head->child->next = NULL; head->child->child = (json *)malloc(sizeof(json)); head->child->child->key = "age"; head->child->child->value = "18"; head->child->child->next = NULL; head->child->child->child = NULL; char *json_str = json_to_string(head); printf("%s\n", json_str); free(json_str); return 0; }
以上就是使用C語言拼接嵌套JSON字符串的方法,希望能對你有所幫助。