#json5 #parse-json #json #parse #input-file #parser

json5_nodes

将JSON5解析成节点,保留JSON值和输入文件位置

3个版本 (稳定)

2.0.1 2022年3月6日
2.0.0 2022年3月5日
0.1.3 2021年11月27日

#11#json5


用于 stampver

Unlicense

21KB
538

json5_nodes

此Rust库将JSON5解析成包含JSON值和原始字符串中数据位置的JsonNode结构。这允许您将JSON5用作配置格式,并回溯到原始JSON5中语义错误的地点,而不是在读取文件时仅报告语法错误。

有关如何使用库的示例,请参阅stampver-rs工具。

实现

我们使用IndexHashMap而不是普通的HashMap,因为JavaScript 大多数情况下保留了对象插入的顺序。此库的JSON5解析器目前仅允许基于字符串的键,因此规则被简化。

所有JSON都分解为不同类型的节点,例如JsonNode::NullJsonNode::StringJsonNode::BoolJsonNode::IntegerJsonNode::FloatJsonNode::ArrayJsonNode::Object。我们定义并解析两种类型的数字,因为在静态类型语言中,特别选择其中一种更为重要。

待办事项

此库仍在开发中。以下是需要完成的一些事项:

  • 通过单元测试接近100%的代码覆盖率。
  • 重写十六进制转换以避免病态的Err情况;值已经解析为有效的输入。
  • 也许确保通过parse读取的内容可以通过stringify以完整保真度写回。特别是转义码根本未处理,十六进制数字不进行往返。
  • 更好的README!

依赖项

~4MB
~75K SLoC