C語言是一種十分流行的編程語言,而JSON是一種輕量級的數(shù)據(jù)交換格式。在C語言中,我們可以使用JSON格式來描述數(shù)據(jù),以便于數(shù)據(jù)的傳遞、解析和存儲。在下面的代碼中,我們來實現(xiàn)一個C語言中JSON格式化的例子。
#include<stdio.h> #include<string.h> #include<stdlib.h> /*JSON格式化函數(shù)*/ char *FormatJson(char *input) { int i = 0, j = 0, k = 0, level = 0; char *output = (char *)malloc(strlen(input) * 2); while (input[i] != '\0') { if (input[i] == '[' || input[i] == '{') { output[j++] = input[i++]; output[j++] = '\n'; level++; for (k = 0; k< level; k++) output[j++] = '\t'; } else if (input[i] == ']' || input[i] == '}') { output[j++] = '\n'; level--; for (k = 0; k< level; k++) output[j++] = '\t'; output[j++] = input[i++]; } else if (input[i] == ',') { output[j++] = input[i++]; output[j++] = '\n'; for (k = 0; k< level; k++) output[j++] = '\t'; } else output[j++] = input[i++]; } output[j] = '\0'; return output; } /*主函數(shù)*/ int main(void) { char input[] = "{\"name\":\"Alice\",\"age\":18,\"hobbies\":[\"reading\",\"swimming\"]}"; char *output = FormatJson(input); printf("format_json:\n%s", output); free(output); return 0; }
在上面的代碼中,我們定義了一個格式化JSON的函數(shù)FormatJson,該函數(shù)可以將輸入的JSON字符串格式化成易讀的形式,并返回格式化后的字符串。我們使用了兩個基本的數(shù)據(jù)結(jié)構(gòu):棧和縮進(jìn)。當(dāng)讀取到一個左括號或左中括號時,我們將其輸出,并加上一個換行符和一個Tab縮進(jìn);當(dāng)讀取到一個右括號或右中括號時,我們也將其輸出,并減少一個縮進(jìn);當(dāng)讀取到逗號時,我們將其輸出,并加上一個換行符和正確的縮進(jìn)。最后,我們使用該函數(shù)將一個JSON字符串格式化,并將格式化后的字符串輸出到控制臺上。