使 libjson 符合 RFC 8259

主要观点:作者用 Go 写了一个 JSON 解析器libjson,想在进行性能工作的同时进行语言开发,其解析器性能接近encoding/json,但通过不同方式与 JSON 对象交互。通过libjson的示例代码展示了其独特的访问方式,还提到了实现中的缺点,如访问较慢和可能的错误原因。作者将libjson添加到JSONTestSuite项目中进行测试,发现 35 个通过,43 个未通过,重点分析了TestStandardFail测试用例中失败的原因及解决方法,即修改(*parser).advance()函数的条件。同时给出了不同输入大小下libjson与其他解析器的性能对比(1.4ms 慢于 1MB 输入等)。

关键信息:

  • libjson的实现目的和特点。
  • encoding/jsonlibjson的访问方式差异。
  • JSONTestSuite项目及libjson的测试情况。
  • TestStandardFail测试用例的失败原因及解决办法。
  • 性能对比结果。

重要细节:

  • libjsonGet函数实现方式及原因(Go 不支持非泛型结构体的方法泛型)。
  • 测试用例中各种 JSON 输入的具体形式和对应的测试情况。
  • (*parser).advance()函数的修改细节及作用。
阅读 12
0 条评论