使用JsonCpp读取JSON文件运行时报第1行第1列语法错误如何解决
JsonCpp解析报错排查解决步骤
- 第一步:添加文件打开状态校验
你现有代码未判断文件是否成功打开,若程序运行的工作目录下不存在items.json,读取空输入流就会触发首行首列的语法报错。请在打开文件后新增校验逻辑:ifstream file("items.json"); // 新增以下校验代码 if (!file.is_open()) { cout << "items.json文件打开失败,请确认文件放在程序运行工作目录下" << endl; exit(1); } - 第二步:移除JSON文件的UTF-8 BOM头
Windows下用记事本、部分默认带BOM配置的编辑器保存JSON文件时,会在文件开头隐藏写入3字节的BOM标记,JsonCpp解析器无法识别该标记,就会抛出首行首列语法错误。
解决方法:使用VS Code、Notepad++等编辑器打开items.json,将编码格式修改为 UTF-8 无BOM 后重新保存即可。 - 第三步:校验文件内容合法性
确认JSON文件开头没有多余的不可见字符(如全角空格、冗余换行、制表符等),你提供的JSON内容本身语法合法,确保实际文件内容和示例一致即可。 - 可选调试方案
若完成以上步骤仍报错,可以先将文件内容读取为字符串打印,确认读取到的内容符合预期,再传入解析器:// 读取文件内容到字符串 string content((istreambuf_iterator<char>(file)), istreambuf_iterator<char>()); cout << "读取到的文件内容:\n" << content << endl; // 解析字符串而非直接传文件流 if (!reader.parse(content, newValue)) { cout << reader.getFormattedErrorMessages(); exit(1); }
内容的提问来源于stack exchange,提问作者Titan
相关产品推荐
相关产品推荐

