JSON字符串是Web開發中使用最多的數據交換格式之一。判斷一個字符串是否是JSON字符串是我們經常需要處理的事情。C語言提供了一些庫函數可以實現這個功能。
下面我們來看一段示例代碼:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int is_json(const char* str) { json_error_t error; json_t* json = json_loads(str, JSON_ALLOW_NUL, &error); if (!json) { return 0; } json_decref(json); return 1; } int main() { char* str1 = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }"; char* str2 = "This is not a valid JSON string."; if(is_json(str1)) { printf("str1 is a valid JSON string.\n"); } else { printf("str1 is not a valid JSON string.\n"); } if(is_json(str2)) { printf("str2 is a valid JSON string.\n"); } else { printf("str2 is not a valid JSON string.\n"); } return 0; }
這段代碼中使用了jansson庫來判斷一個字符串是否是JSON字符串。is_json函數中,我們首先使用json_loads函數來解析字符串,并賦值給json_t類型的變量json。如果解析出錯,函數返回0。如果解析成功,我們需要使用json_decref函數釋放json對象。最后,函數返回1。
在main函數中,我們分別用兩個字符串來測試is_json函數。運行這個程序,輸出結果如下:
str1 is a valid JSON string. str2 is not a valid JSON string.
這個程序正確地判斷了兩個字符串是否是JSON字符串。