为什么JQ支持解析带前导零的非法数值?是设计如此还是Bug?
jq解析带前导零的非标准JSON是有意设计而非Bug
这个表现是jq的有意设计,并非程序漏洞。
- jq默认采用宽松JSON解析策略,没有严格遵循RFC 8259中「数字禁止存在前导零」的规范约束,目的是兼容日常手写JSON时的常见不规范写法,降低使用门槛。
- 除了前导零数字之外,jq默认还兼容多种非标准JSON语法:
- 未加引号的键名,例如
{a: 1} - 结构末尾的多余逗号,例如
{"a": 1,} - 单引号包裹的字符串与键名
//开头的单行注释
- 未加引号的键名,例如
- 如果你需要让jq严格校验标准JSON格式,可以在调用时添加
--strict参数,此时输入{"a" : 01}这类非标准结构会直接抛出解析错误,不会自动转换处理。
补充说明:jq的定位是面向日常使用的命令行JSON处理工具,默认优先兼顾使用便利性,严格规范校验作为可选能力提供给有强规范需求的场景。
内容的提问来源于stack exchange,提问作者Jaro
相关产品推荐
相关产品推荐

