文章目录
- zpl-c 库
- HJSON
- cJSON
- RapidJSON (推荐)
- DAW JSON Link v2
- JSON ,这库稳定,文档齐全。(推荐)
- json-c (c实现)
- json_dto (一个小的头文件助手)
- json11 ( C++11 的小型 JSON 库 )
- json_spirit (开发中,可以关注看看)
- Boost.Spirit 模块
- jsoncons (大文件解析)值得一试
- JsonCpp (保留注释)推荐
- Jsonnet (Google 推出的一门 JSON 模板语言,用来取代 JSON)
- json-tutorial (自己实现一个josn库的教程)
- jwt-cpp (验证 json Web tokens )
- PicoJSON
- sajson
- simdjson :每秒解析千兆字节的 JSON (推荐)
- yyjson (C 中最快的 JSON 库)
zpl-c 库
是一个多功能集合库,其中有 JSON5 解析器。支持注释
链接: https://github.com/zpl-c/zpl#
HJSON
HJSON支持注释,支持多种语言。
c++库链接: https://github.com/hjson/hjson-cpp
链接:https://github.com/hjson/
cJSON
用c写的超轻量级JSON解析器。只有一个.h和.c。
链接:https://github.com/DaveGamble/cJSON
RapidJSON (推荐)
RapidJSON 是一个 C++ 的 JSON 解析器及生成器。它的灵感来自 RapidXml。
RapidJSON 小而全。它同时支持 SAX 和 DOM 风格的 API。SAX 解析器只有约 500 行代码。
RapidJSON 快。它的性能可与 strlen() 相比。可支持 SSE2/SSE4.2 加速。
RapidJSON 独立。它不依赖于 BOOST 等外部库。它甚至不依赖于 STL。
RapidJSON 对内存友好。在大部分 32/64 位机器上,每个 JSON 值只占 16 字节(除字符串外)。它预设使用一个快速的内存分配器,令分析器可以紧凑地分配内存。
RapidJSON 对 Unicode 友好。它支持 UTF-8、UTF-16、UTF-32 (大端序/小端序),并内部支持这些编码的检测、校验及转码。例如,RapidJSON 可以在分析一个 UTF-8 文件至 DOM 时,把当中的 JSON 字符串转码至 UTF-16。它也支持代理对(surrogate pair)及 “\u0000”(空字符)。
链接:
http://rapidjson.org/zh-cn/
DAW JSON Link v2
可能是最快的JSON反序列化/序列化器
C++ 中的快速 JSON 序列化和解析
DAW JSON Link 库提供了多种方式在 C++ 中序列化/反序列化 JSON 文档。主要是将 JSON 直接解析为 C++ 数据结构。这允许利用文档的已知结构进行更好的检查和性能。
JSON ,这库稳定,文档齐全。(推荐)
推荐这库:
链接:https://github.com/nlohmann/json
json-c (c实现)
GitHub源码:https://github.com/json-c/json-c
API文档:http://json-c.github.io/json-c/
json_dto (一个小的头文件助手)
一个用于在 json 和 c++ 结构之间转换数据的小型头库
https://github.com/Stiffstream/json_dto
json11 ( C++11 的小型 JSON 库 )
json11 是一个用于 C++11 的小型 JSON 库,提供 JSON 解析和序列化。
库提供的核心对象是json11::Json。Json 对象表示任何 JSON 值:null、bool、数字(int 或 double)、字符串(std::string)、数组(std::vector)或对象(std::map)。
Json 对象就像值一样。它们可以被分配、复制、移动、比较相等或顺序,等等。还有辅助方法 Json::dump,将 Json 序列化为字符串,和 Json::parse(静态)将 std::string 解析为 Json 对象。
https://github.com/dropbox/json11
json_spirit (开发中,可以关注看看)
使用 Boost.Spirit V2 和 X3 作为解析器的 json 库。
json Spirit 库的主要目标是创建一个符合标准的 json 解析器,生成一个可以像在 javascript 或 python 中一样操作的 json 对象。
https://github.com/cierelabs/json_spirit
Boost.Spirit 模块
Spirit 是一组用于解析和输出生成的 C++ 库,使用表达式模板和模板元编程实现为领域特定嵌入式语言 (DSEL)。Spirit 库使目标语法能够专门用 C++ 编写。内联语法规范可以与其他 C++ 代码自由混合,并且由于 C++ 模板的生成能力,可以立即执行。
https://github.com/boostorg/spirit
jsoncons (大文件解析)值得一试
与其他 JSON 库相比,jsoncons 旨在处理非常大的 JSON 文本。它的核心是 SAX 风格的解析器和序列化器。它支持以类似变体的结构读取内存中的整个 JSON 文本。但它也支持使用 StAX 风格的拉式解析和推式序列化对底层数据的有效访问。并且它支持使用json_type_traits 的特化提供的有关用户类型的信息,将增量解析为用户的首选形式。
https://github.com/danielaparker/jsoncons
JsonCpp (保留注释)推荐
JSON是一种轻量级的数据交换格式。它可以表示数字、字符串、有序的值序列以及名称/值对的集合。
JsonCpp 是一个 C++ 库,它允许操作 JSON 值,包括与字符串之间的序列化和反序列化。它还可以在反序列化/序列化步骤中保留现有注释,使其成为存储用户输入文件的便捷格式。
jsoncpp的特点:
读取和写入 JSON 文档。
在解析过程中将C 和 C++ 样式注释附加到元素。
重写 JSON 文档,保留原始注释。
源码:
https://github.com/open-source-parsers/jsoncpp
示例:
https://github.com/open-source-parsers/jsoncpp/wiki
文档:
http://open-source-parsers.github.io/jsoncpp-docs/doxygen/index.html
Jsonnet (Google 推出的一门 JSON 模板语言,用来取代 JSON)
https://github.com/google/jsonnet
json-tutorial (自己实现一个josn库的教程)
https://github.com/miloyip/json-tutorial
jwt-cpp (验证 json Web tokens )
用于在 C++ 中创建和验证 json Web 令牌的仅标头库
https://github.com/Thalhammer/jwt-cpp
PicoJSON
PicoJSON 是一个用于 C++ 的小型 JSON 解析器/序列化器,具有以下特点:
仅头文件
无外部依赖(仅使用标准 C++ 库)
STL 友好(数组使用 std::vector 表示,对象使用 std::map)
提供拉接口和流(基于事件)接口
https://github.com/kazuho/picojson
示例代码:
https://github.com/kazuho/picojson/wiki
sajson
单个头文件——只需将 sajson.h 放入您的项目中即可。
没有例外,RTTI 或 longjmp。
O(1) 堆栈使用。没有文档会溢出堆栈。
只有两种数字类型:32 位和双精度。
代码量小——适用于 Emscripten。
已用美国 Fuzzy Lop 进行模糊测试。
https://github.com/chadaustin/sajson
simdjson :每秒解析千兆字节的 JSON (推荐)
JSON 在互联网上无处不在。服务器花费很多时间来解析它。我们需要一种新的方法。simdjson 库使用常用的 SIMD 指令和微并行算法来解析 JSON,比 RapidJSON 快 4 倍,比现代 C++ 的 JSON 快 25 倍。
快速:比常用的生产级 JSON 解析器快 4 倍以上。
破纪录的功能:以 6 GB/s 的速度压缩 JSON,以 13 GB/s 的速度验证 UTF-8,以 3.5 GB/s 的速度验证 NDJSON。
简单:一流的、易于使用且经过仔细记录的 API。
严格:完整的 JSON 和 UTF-8 验证,无损解析。性能毫不妥协。
自动:在运行时选择 CPU 定制的解析器。无需配置。
可靠:从内存分配到错误处理,simdjson 的设计都避免了意外。
同行评议:我们的研究发表在 VLDB Journal、Software: Practice and Experience 等刊物上。
链接:
https://github.com/simdjson/simdjson
yyjson (C 中最快的 JSON 库)
快速:可以在现代 CPU 上每秒读取或写入千兆字节的 JSON 数据。
便携式:符合 ANSI C (C89)。
标准:严格遵守 RFC 8259和ECMA-404标准。
安全:完整的 JSON 格式、数字格式和 UTF-8 验证。
精度:可读写int64,uint64并且double号码准确。
无限制:支持无限制的 JSON 级别、\u0000字符串。
可扩展:允许注释、尾随逗号、nan/inf、自定义内存分配器的选项。
开发者友好:只有一个h和一个c文件,易于使用的 API。
链接:
https://github.com/ibireme/yyjson