导言:我已经有好几个项目使用了libjson库,感觉这是个挺不错的JSON库,顺便翻译了下他文档的主要部分,希望和大家一起了解学习。由于内容较多,无法全部发在博客文章上,大家可以通过我的github下载完整文档。https://github.com/yaocoder/MyDocument/blob/master/libjson%E6%96%87%E6%A1%A3%E7%BF%BB%E8%AF%91.pdf


关于libjson

项目主页:http://sourceforge.net/projects/libjson/

        libjson 是一个适用于C和C++语言高效的并且可灵活定制的json库。它拥有针对C++的接口,使C++开发人员也能够在他们的程序中使用json,同时由于多数libjson的方法(函数)是内敛的,更进一步提升了库的效率。它也为其他类型的语言提供了C风格的接口和共享库。文档将会讲解如何去构建、优化libjson来适应你的需求,并且对C、C++接口进行详细的说明。

       libjson当前最新版本为7.*,如果你想把程序中的libjson 5或是更早的版本升级到此版本,请注意相应的接口变化,但是也不用担心,所有的函数功能没有变化,它们只是更完善,更标准化。如果你想从libjson 6升级,仅有的变化是 json_validate这个接口。 libjson的接口在升级中(完善和修正bug)并没有发生变化,你可以查看每一次版本升级的changelog。

       libjson不仅高效,功能也很丰富,包括parsers, writers, builders, formatters, validators…  ,它还可以根据你的需求进行灵活的定制。也许你会感到奇怪:libjson看上去如此轻量但是却拥有一个200多页的文档和很多文件,但事实上你可以根据你的需求只使用需要的部分。JSONOptions.h文件中介绍了这些配置选项。在后面的部分将给你详细介绍这些配置选项的适用场景, 这些选项允许你根据自己的程序去做相应的优化。libjson设计的很精巧,它只使用少量内存,并且很高效。所以尽量不要对库本身做一些不紧要的微调。

       libjson相比其他库更具备可定制性,包括mutex管理,垃圾收集(garbage collection),内存管理(memory control),unicode支持,可以灵活的定制而非只提供给你默认的行为。它拥有纯净的C接口,所有C风格的接口都有 json_前缀。它也拥有非常直观的C++接口,比如迭代器(iterators),与STL的风格相似。C和C++两种库共享了部分代码,但也有各自特定的代码。

       libjson是安全的,它的默认行为就具有抵御拒绝服务***(DoS)的能力,并且它还拥有其他可配置的安全选项。

支持的平台:

libjson官方支持并且进行过测试验证的是以下平台:

  • gcc (OSX) ——完全支持

  • llvm (OSX) - 完全支持

  • gcc (LInux) - 完全支持

  • MinGW (Windows) - 支持, 部分经过测试

  • Visual C++ (Windows) - 支持, 部分经过测试

以下主要是讲解如何通过配置JSONOptions.h构建你需要的libjson...