使用nlohmann JSON解析器查找result键失败求助
问题原因与解决方法
你的代码输出'result' not found的核心原因是JSON字符串包含不符合标准语法的尾逗号:
- 数组
lines内的两个对象中,"w":7,和"w":8,末尾的逗号属于多余的尾逗号 - 标准JSON语法禁止在对象/数组的最后一个元素后添加逗号,而nlohmann/json默认采用严格解析模式,遇到这类非法JSON时会解析失败,导致
root并未正确加载目标JSON结构,因此find("result")无法找到对应字段。
修复方案
方案1:修正JSON字符串(推荐)
去掉所有多余的尾逗号,符合标准JSON语法:
{ "result":{ "lines":[ { "i":1, "w":7 }, { "i":1, "w":8 } ] }, "success":true }
方案2:启用非严格解析模式
如果需要兼容这类带尾逗号的JSON,可以在解析时开启非严格模式:
json root = json::parse(str, nullptr, true);
第三个参数设为true,允许解析包含尾逗号、注释等非标准内容的JSON。
内容的提问来源于stack exchange,提问作者canellas
相关产品推荐
相关产品推荐

