在C語言中,判斷一個字符串是否為JSON格式可以使用正則表達式,也可以使用庫函數。下面是使用庫函數的方法。
#include <stdio.h> #include <jansson.h> int is_json(char* str) { json_t* root = json_loads(str, JSON_ALLOW_NUL, NULL); if(!root) { return 0; // 解析失敗,不是JSON格式 } json_decref(root); return 1; // 解析成功,是JSON格式 } int main() { char* str1 = "{ \"name\": \"Alice\", \"age\": 25 }"; char* str2 = "{ name: \"Bob\", age: 30 }"; if(is_json(str1)) { printf("%s is JSON format.\n", str1); } else { printf("%s is not JSON format.\n", str1); } if(is_json(str2)) { printf("%s is JSON format.\n", str2); } else { printf("%s is not JSON format.\n", str2); } return 0; }
上面的代碼使用了jansson庫,它是一個C語言的JSON解析庫。is_json函數接受一個字符串參數,調用json_loads函數解析字符串。如果解析失敗,json_loads會返回NULL,is_json函數返回0;否則調用json_decref函數釋放內存,返回1。
使用上面的方法可以快速判斷一個字符串是否為JSON格式。