C語言是一種計算機編程語言,它是一種高級語言,可以通過編譯轉化為機器碼。JSON是一種輕量級的數據交換格式,常用于前后端數據傳輸,也經常和C語言一起使用。接下來我們將介紹如何使用C語言判斷一個字符串是否為JSON格式。
#include <stdio.h> #include <ctype.h> int isJSON(char* str) { int len = strlen(str); if (str[0] != '{' || str[len-1] != '}') { return 0; } int cnt = 0; for (int i = 1; i< len-1; i++) { char ch = str[i]; if (ch == '{') { cnt++; } else if (ch == '}') { cnt--; } else if (ch == ':') { if (isspace(str[i-1]) || isspace(str[i+1])) { return 0; } } } return cnt == 0; } int main() { char* str1 = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }"; printf("%d\n", isJSON(str1)); // 輸出1 char* str2 = "hello world"; printf("%d\n", isJSON(str2)); // 輸出0 return 0; }
上述代碼中我們使用了兩個關鍵函數,一個是 isJSON 函數,用于判斷字符串是否為 JSON 格式,另一個則是 isspace 函數,用于判斷字符是否為空格。isJSON 函數會先判斷字符串的首尾是否為 JSON 對象符號 { },如果不是,則肯定不是 JSON 格式,返回 0。接下來我們遍歷字符串的每一個字符,當遇到 { 符號時,計數器 cnt 加 1,當遇到 } 符號時,計數器 cnt 減 1。當遇到鍵值對時,判斷前后是否有空格,如果有,則返回 0,不是 JSON 格式。最后判斷計數器 cnt 是否為 0,如果為 0,說明所有的 { 和 } 成對出現,字符串符合 JSON 格式,返回 1,否則返回 0。
在 main 函數中,我們分別測試了兩個字符串,一個符合 JSON 格式,另一個不符合。第一個字符串輸出 1,表示符合 JSON 格式;第二個字符串輸出 0,表示不符合 JSON 格式。