C语言JSON字符串合法性检查

在http://www.json.org/JSON_checker/上有一个开源的工具,仅一个C文件、一个H文件,还附带UTF8转UTF16的转换工具。

将main函数修改了一下,便可作为工程的一个小模块使用,检查JSON字符串的合法性,以便于进行报文解析。
/*
    Read input string and check.

    if not json string return -1, else return 0.

    jc will contain a JSON_checker with a maximum depth of 20.
*/
int json_checker(const char *json_str) 
{
    JSON_checker jc = new_JSON_checker(20);

    int len = strlen(json_str);
    int tmp_i = 0;

    for (tmp_i = 0; tmp_i < len; tmp_i++) 
    {
        int next_char = json_str[tmp_i];
        if (next_char <= 0) 
        {
            break;
        }
        if (0 == JSON_checker_char(jc, next_char)) 
        {
            fprintf(stderr, "JSON_checker_char: syntax error\n");
            return -1;
        }
    }

    if (0 == JSON_checker_done(jc)) 
    {
        fprintf(stderr, "JSON_checker_end: syntax error\n");
        return -1;
    }

    return 0;
}
至此,该模块已经可以检测JSON字符串的合法性了,但是还是不支持中文字符,一旦输入合法的保含中文的JSON字符串还是会报错。
想了个简单的办法,将字符串中的中文字符全部以“*”替换掉,再进行合法性检测,检测通过,则可认为字符串是JSON报文。
/**
 * @function 将中文字符替换为'*' 用于json字符串合法性检查
 * @ in      json string
 * @author   super bert
 */
int replace_character(char *string)
{
    if (string == NULL)
    {
        printf("No string buf...\n");
        return -1;
    }

    while(*string++ != '\0')
    {
        if (((*string) < 0x00) || ((*string) > 0x7F))
        {
            *string = '*';
        }
    }

    return 0;
}

如果有更好的办法处理中文字符,请不吝赐教。

**如若转载,请注明出处:http://blog.csdn.net/embedded_sky/article/details/44117911
作者:super_bert@csdn**

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值