3个版本 (稳定)
2.0.1 | 2022年3月6日 |
---|---|
2.0.0 | 2022年3月5日 |
0.1.3 | 2021年11月27日 |
#11 在 #json5
用于 stampver
21KB
538 行
json5_nodes
此Rust库将JSON5解析成包含JSON值和原始字符串中数据位置的JsonNode
结构。这允许您将JSON5用作配置格式,并回溯到原始JSON5中语义错误的地点,而不是在读取文件时仅报告语法错误。
有关如何使用库的示例,请参阅stampver-rs
工具。
实现
我们使用IndexHashMap
而不是普通的HashMap
,因为JavaScript 大多数情况下保留了对象插入的顺序。此库的JSON5解析器目前仅允许基于字符串的键,因此规则被简化。
所有JSON都分解为不同类型的节点,例如JsonNode::Null
、JsonNode::String
、JsonNode::Bool
、JsonNode::Integer
、JsonNode::Float
、JsonNode::Array
和JsonNode::Object
。我们定义并解析两种类型的数字,因为在静态类型语言中,特别选择其中一种更为重要。
待办事项
此库仍在开发中。以下是需要完成的一些事项:
- 通过单元测试接近100%的代码覆盖率。
- 重写十六进制转换以避免病态的
Err
情况;值已经解析为有效的输入。 - 也许确保通过
parse
读取的内容可以通过stringify
以完整保真度写回。特别是转义码根本未处理,十六进制数字不进行往返。 - 更好的README!
依赖项
~4MB
~75K SLoC