在C語言中解析JSON字符串是一個比較常見的場景,但是由于JSON字符串格式多種多樣,不合法的字符串容易在解析時引起異常,因此需要對JSON字符串進行檢查。
下面介紹常見的JSON字符串檢查方法:
// 檢查JSON字符串是否為對象格式 bool is_object(const char *json_str) { char *end_ptr; if ((json_str[0] != '{') || ((end_ptr = strrchr(json_str, '}')) == NULL)) return false; return (end_ptr - json_str) >0; } // 檢查JSON字符串是否為數組格式 bool is_array(const char *json_str) { char *end_ptr; if ((json_str[0] != '[') || ((end_ptr = strrchr(json_str, ']')) == NULL)) return false; return (end_ptr - json_str) >0; } // 檢查JSON字符串是否為字符串格式 bool is_string(const char *json_str) { return ((json_str[0] == '\"') && (json_str[strlen(json_str) - 1] == '\"')); } // 檢查JSON字符串是否為數值格式 bool is_number(const char *json_str) { char *end_ptr; strtod(json_str, &end_ptr); return (end_ptr - json_str) == strlen(json_str); } // 檢查JSON字符串是否為布爾格式 bool is_bool(const char *json_str) { return ((strcmp(json_str, "true") == 0) || (strcmp(json_str, "false") == 0)); }
這些方法可以用于檢查JSON字符串的格式是否正確,當格式不正確時可以提前捕獲錯誤,避免出錯。