色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 判斷是否是json

傅智翔1年前9瀏覽0評論

C語言如何判斷一個字符串是否為JSON格式?

#include <stdio.h>#include <stdbool.h>#include <ctype.h>#include <string.h>bool is_valid_json(const char *str)
{
int len = strlen(str);
int left = 0;
int right = len - 1;
bool in_string = false;
// 忽略左右兩邊的空格
while (isspace(str[left])) left++;
while (isspace(str[right])) right--;
// 判斷是否是對象或數組
if (str[left] == '{' && str[right] == '}' ||
str[left] == '[' && str[right] == ']') {
// 遍歷字符串
for (int i = left + 1; i<= right - 1; i++) {
if (str[i] == '"' && !in_string) {
in_string = true; // 進入字符串
} else if (str[i] == '"' && in_string) {
in_string = false; // 離開字符串
} else if (!in_string && (str[i] == ',' || str[i] == ':')) {
// 逗號或冒號前必須有值
if (i == left + 1 || i == right - 1) {
return false;
}
}
}
return true; // 如果遍歷完整個字符串沒有錯誤,說明是JSON格式
}
return false; // 如果不是對象或數組,就不是JSON格式
}
int main()
{
const char *json_str = "{ \"name\": \"Tom\", \"age\": 20 }";
if (is_valid_json(json_str)) {
printf("是JSON格式\n");
} else {
printf("不是JSON格式\n");
}
return 0;
}

以上代碼中,is_valid_json函數用于判斷字符串是否為JSON格式。

在遍歷字符串的過程中,需要考慮到字符串內部可能存在逗號和冒號,因此需要一個變量來記錄是否在字符串內部。

同時,還需要判斷字符串是否是對象或數組,對象以 { 開頭,} 結尾,數組以 [ 開頭,] 結尾,其他情況都不是JSON格式。

在遍歷過程中,如果發現逗號或冒號前沒有值,就說明不是JSON格式。

如果遍歷完整個字符串沒有錯誤,就說明是JSON格式。