This is YAJL 2, for the legacy version of YAJL. see
https://github.com/lloyd/yajl/tree/1.x
欢迎使用另一个 JSON 库(YAJL)
这是一个好问题。在审查当前的 C 语言 JSON 解析库时,我发现没有一个完全符合我的要求。这些要求是:0.用 C 语言编写 1.可移植 2.健壮 – 尽可能地接近“崩溃防止” 3.数据表示独立 4.快速 5.生成详细、有用的错误消息,包括输入文本中错误发生的位置 6.可以从流中解析 JSON 数据 7.易于使用 8.小巧
数字 3、5、6 和 7 尤其难以找到,这也是我最终创建 YAJL 的原因。本文档将向您介绍 YAJL 的一些重要方面。
许可自由度意味着您可以在开源和商业产品中使用它而不收取任何费用。关于许可,我还有一个请求:如果您发现错误,请给我发电子邮件,或者更好的是,发起真正改革并修复。
移植 YAJL 应该非常容易,其实现是 ANSI C。如果您将其移植到新的系统,我非常希望听到并合并您的补丁。
BYODR!许多 JSON 库将基于结构的表示强加给您。在某些情况下,这是一个优点,在其他情况下则是一个缺点。YAJL 通过回调机制保持对内存表示的无关性。所以如果您想使用 YAJL 来构建内存表示,可以这样做,但是您必须提供定义和填充内存结构的代码。
这也意味着 YAJL 可以由其他(较高级)JSON 库使用,如果需要的话。
这意味着您不需要在内存中以文本的形式保留整个 JSON 表示。这使得 YAJL 成为过滤项目的理想选择,其中需要将 YAJL 从一种形式转换为另一种形式(即 XML)。所提供的 JSON 美化打印器是一个这样的筛选程序的示例。
执行最小的内存复制。如果可能,YAJL返回客户端提供的文本中的指针(即对于没有嵌入转义字符的字符串,希望是常见情况)。我投入了大量努力对性能进行剖析和调整,但为了保持接口简洁、规模小和灵活,忽略了几项可能的性能提升。我的希望是YAJL的表现将与其他最快的JSON解析器相当。
YAJL应将对您的应用程序的CPU和内存需求降到最低。
无脂。无奶油。
享受吧,Lloyd - 2007年7月