C++中json解析开源库收集,支持json5

article/2025/10/16 14:35:17

文章目录

    • 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


http://chatgpt.dhexx.cn/article/EkifwIG5.shtml

相关文章

SpringBoot之JWT令牌

目录 介绍 生成和校验 登录下发令牌 介绍 JWT全称:JSON Web Token (官网:https://jwt.io/) 定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信…

七 微服务网关gateWay和Jwt令牌

之前写过一篇微服务网关Zuul,今天介绍gateWay,二者大同小异,但各有优势,大家可以都了解一下,拓展自己的知识面; 一 微服务网关 主要作用 整合各个微服务功能,形成一套系统在微服务网关中实现…

登录校验-会话技术/JWT令牌

登录校验 会话技术 会话: 用户打开浏览器,访问web资源的时候,会话建立。直到一方断开连接,会话结束,一次会话中包含多次响应 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来…

服务的校验Content-Type,只接收application/json格式的CSRF绕过方法

如何在JSON端点上利用CSRF漏洞 转载自:https://www.freebuf.com/articles/web/164234.html Alpha_h4ck (CSRF Flash HTTP 307)别说了,你已经“死”了! 如果你想通过第三方攻击者控制的服务器在JSON端点利用一个CS…

nginx 限流,以及nginx直接返回json格式数据

高并发系统有三把利器用来保护系统:缓存、降级和限流 今天我们这里说说限流。一般会在应用层配合redis做限流策略,这里我们聊聊nginx层限流。 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达…

JWT-JSON Web令牌的深入介绍

JWT-JSON Web令牌的深入介绍 从桌面应用程序到Web应用程序或移动应用程序,身份验证是几乎所有应用程序中最重要的部分之一。 本教程是JWT(JSON Web令牌)的深入介绍,可帮助您了解: 基于会话的身份验证与基于令牌的身份…

JSON Web Token原理深入理解

什么是JWT JWT全称Json Web Token,翻译为JSON格式的网络令牌,很多时候又简称为Token(JWT是Token的一种实现方式)。它要解决的问题,就是为多种终端设备,提供统一的、安全的令牌格式。因此,JWT只是一个令牌格式而已&…

【JWT】jwt令牌研究

一、JWT介绍 在介绍JWT之前先看一下传统校验令牌的方法,如下图: 问题: 传统授权方法的问题是用户每次请求资源服务,资源服务都需要携带令牌访问认证服务去校验令牌的合法性,并根据令牌获取用户的相关信息&#xff0c…

JWT令牌验证

JWT令牌验证 jwt的由来及解决的问题JWT的工作原理JWT组成重点:JWT实现验证:4.1 首先前后端跨域配置:4.2 jwt配置:4.3 web.xml配置:4.4 登录成功时生成jwt令牌前端NodeJs服务器配置拦截器,配置在http目录下4…

如何使用JSON Web令牌(JWT)保护您的文档

如何使用JSON Web令牌(JWT)保护您的文档 在本文中,我们讲解如何使用JSON网络令牌JWT来保护在线文档免受未经授权的访问,从而可以更安全的把在线文档编辑器开发集成进您自己的网络应用中去。 这里将集成开源的办公套件ONLYOFFICE …

day13 SpringBoot案例3 令牌技术、登录校验

登录校验的实现思路是怎样的? 项目中访问核心资源,通常都要进行登录校验,访问京东商城的订单,必须要先登录才能访问查询 实现思路: 可以在访问资源前进行访问的拦截,判断你当前会话是否有登录,如果没有登…

pythonjson数据解析失败_json解析失败是什么意思

因为代码的不美观等因素,我们会使用一些解析工具进行处理,有些人在解析时出现了报错。解析失败需要考虑多方面的因素,如格式、String类型、boolean类型等原因,在格式上分为格式错误和格式正确两种讨论。下面就json解析失败的原因为…

Java Web Token令牌校验

前言:本文只涉及JWT的理论部分,不涉及代码 传统的用户校验可以结合cookiesession来实现,但是校验信息存放在服务端,当用户过多时会给服务器造成太大的压力,所以我们可以使用token进行校验,将用户信息加以签…

JWT令牌生成与校验

目录 1 JWT介绍1.1 什么是JWT?1.2 JWT令牌结构 2 配置JWT令牌服务3 生成JWT令牌4 校验JWT令牌5 JWT整合Spring Security5.1 创建表 6 配置授权服务6.1 测试 1 JWT介绍 通过上边的测试我们发现,当资源服务和授权服务不在一起时资源服务使用RemoteTokenSe…

信息系统基础知识(笔记)

一、信息 1.1、信息的基本概念 信息就是信息,既不是物质们也不是论量,信息是能够用来消除不确定的东西 两个概念层次:本体论(客观层,与课客体本身因素相关,与主题因素无关) 认知论&#xff0…

计算机毕业论文内容参考|基于大数据的信息物理融合系统的分析与设计方法

文章目录 导文摘要前言绪论课题背景国内外现状与趋势:课题内容:相关技术与方法介绍:系统架构设计:数据采集与处理:数据存储与管理:数据分析与挖掘:系统优化与调试:应用场景:挑战与机遇:研究方向:系统分析:系统设计:系统实现:系统测试:总结与展望:

工业4.0中的人-信息-物理系统集成(HSI):设计与评估方法

于栖洋 译 摘要:本文概述了工业4.0中集成人和信息物理系统的设计和使用空间,特别关注分析、设计和评估方法和阶段的相互作用。本文首先介绍了工业4.0面临的挑战,综述了现有的系统设计方法,描述了方法模型的设计和使用空间,并以工…

信息系统基本知识(六)

大纲 信息系统与信息化信息系统开发方法常规信息系统集成技术软件工程新一代信息技术信息系统安全技术信息化发展与应用信息系统服务管理信息系统服务规划企业首席信息管及其责任 1.7 信息化发展与应用 我国在“十三五”规划纲要中,将培育人工智能、移动智能终端…

Unity物理系统(一)物理系统相关组件

一、物理系统相关组件 Unity中的物理系统涉及的组件分为如下几类: 刚体角色控制器碰撞体布料关节力场 二、刚体(Rigidbody) Rigidbody(刚体)组件可以使游戏对象在物理系统的控制下进行运动,Rigidbody …

工业信息物理系统测试验证平台(ETest_CPS)

1.产品简介 ETest_CPS是基于ETest Studio开发出的工业信息物理系统测试验证平台(Embedded System Test Studiofor Cyber-Physical System,简称:ETest_CPS)。ETest_CPS由软件和硬件组成,软件采用ETest,硬件包括测试机柜…