C语言json格式校验
最近用到json格式数据传输信息,在C语言中使用cjson解析json字符串,若json格式不正确,会使整个进程直接挂掉。想到能否在解析前先进行格式校验,通过后再解析,查找资料,网上有现成源码,网址:http://www.json.org/JSON_checker/
主要用到两个文件JSON_checker.c和JSON_checker.h,具体用法可以参考main.c。这里参考了博客:C语言如何检测json格式的数据合法性 中的用法,并加以改进。
在官网中提供了json检查的测试文件,但没有包含中文的,这里添加了一个中文测试文件,如下:
{
"JSON 测试 pass4": {
"Chinese": "中文测试.",
"这是pass4测试": "中文中文."
}
}
main.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "JSON_checker.h"
/*
批量读取test下文件并检查json格式
*/
int main()
{
int nRtn = 0;
FILE *fp;
int i;
int nStrLen;
char abyFile[16] = {
0};
char *json_src_string = NULL;
char *json_chk_string = NULL;
//错误文件检查
for (i = 1; i < 34 ; i++)
{
sprintf(abyFile, "test/fail%d.json", i);
if ((fp = fopen(abyFile, "rb")) == NULL)
{
printf("open %s failed\n", abyFile);
continue;
}
fseek(fp, 0, SEEK_END);
nStrLen = ftell(fp)