5 Json合法性校验

json不合法的时候,由字符串转成json可能会导致程序复位,没有试cjson是不是这样,cjson也有别的bug。而C语言又不能try。为了防止意外的发送了不合法的json字符串,就想到了校验它合法性的方法。
在网上找到一个开源的项目,所以不用自己造轮子了:原项目地址

5 Json合法性校验_第1张图片
json checker

在此基础上,自己改了下写成了一个函数:

uint8_t Jchecker(char* jcdata)
{
  /*
    Read STDIN. Exit with a message if the input is not well-formed JSON text.

    jc will contain a JSON_checker with a maximum depth of 20.
*/
    JSON_checker jc = new_JSON_checker(20);
    for (int i=0;;i++) 
    {
        int next_char = jcdata[i];
        if (next_char <= 0) {
            printf("JSON_checker_char:json correct\n");
            return 0;
        }
        if (!JSON_checker_char(jc, next_char)) {
            printf("JSON_checker_char: syntax error\n");
            return 1;
        }
    }
    if (!JSON_checker_done(jc)) {
        printf("JSON_checker_end: syntax error\n");
        return 1;
    }
}

唯一有点坑的地方是,它对结尾的"}"不敏感,没有也不会报错。

你可能感兴趣的:(5 Json合法性校验)