DEV Community · Show DEV9/1 17:3259 分
标准库不是验证器:72小时零依赖Rust JSON工具
The standard library is not a validator: 72 hours of zero-dependency JSON in Rust
作者在周末用Rust构建了一个JSON工具包,严格遵守零第三方依赖的规则,Cargo.toml中的依赖表为空,Cargo.lock仅包含项目本身。文章指出,Rust标准库的f64::from_str和i64::from_str会接受约10%的RFC 8259规定必须拒绝的无效JSON,如NaN、Infinity、.5、5.、+1和012。作者基于真实语料库计数后,开发了jaq-lite,一个手写的RFC 8259解析器、序列化器和jq风格查询CLI,共4670行源码和4432行测试,仅使用标准库。它支持身份、字段访问、索引、迭代、管道、逗号、括号、可选操作符和11个内置函数。作者使用JSONTestSuite进行测试,其中47个n_number_文件中有19个被Rust标准库错误接受。