RapidJSON 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
RapidJSON 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
RapidJSON 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 C/C++ 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织 腾讯
地区 国产
投 递 者 MiloYip
适用人群 未知
收录时间 2012-02-01

软件简介

Rapidjson 是一个 C++ 的快速 JSON 解析器和生成器,使用 SAX/DOM 风格的 API 设计。

示例代码:

// rapidjson/example/simpledom/simpledom.cpp`
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>

using namespace rapidjson;

int main() {
    // 1. Parse a JSON string into DOM.
    const char* json = "{\"project\":\"rapidjson\",\"stars\":10}";
    Document d;
    d.Parse(json);

    // 2. Modify it by DOM.
    Value& s = d["stars"];
    s.SetInt(s.GetInt() + 1);

    // 3. Stringify the DOM
    StringBuffer buffer;
    Writer<StringBuffer> writer(buffer);
    d.Accept(writer);

    // Output {"project":"rapidjson","stars":11}
    std::cout << buffer.GetString() << std::endl;
    return 0;
}

介绍 PPT 下载:http://www.oschina.net/doc/5711

主要特点:

RapidJSON 是一个 C++的 JSON 解析器及生成器。它的灵感来自 RapidXml。

  • RapidJSON 小而全。它同时支持 SAX 和 DOM 风格的 API。SAX 解析器只有约500行代码。

  • RapidJSON 快。它的性能可与 strlen()相比。可支持SSE2/SSE4.1加速。

  • RapidJSON 独立。它不依赖于 BOOST 等外部库。它甚至不依赖于 STL。

  • RapidJSON 对内存友好。在大部分32/64位机器上,每个 JSON 值只占16或20字节(除字符串外)。它预设使用一个快速的内存分配器,令分析器可以紧凑地分配内存。

  • RapidJSON 对 Unicode 友好。它支持 UTF-8、UTF-16、UTF-32 (大端序/小端序),并内部支持这些编码的检测、校验及转码。例如,RapidJSON 可以在分析一个 UTF-8文件至 DOM 时,把当中的 JSON 字符串转码至 UTF-16。它也支持代理对(surrogate pair)及"\\u0000"(空字符)。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (6)

加载中
腾讯是不是特喜欢用C++
2021/09/18 09:24
回复
举报
keyide
2018/03/09 15:40
回复
举报
很好! RapidJSON
2015/04/05 10:03
回复
举报
性能比它高一倍的fasterjson笑而不语 RapidJSON
2015/04/05 11:19
回复
举报
C++ 没有类似 CPAN 的发布平台吗? RapidJSON
2015/04/07 14:56
回复
举报
这个不错,可以学习下 #RapidJSON#
2016/09/21 15:58
回复
举报
更多评论
发表了资讯
2015/04/28 00:00

28 个 C/C++ 开源 JSON 程序库性能及标准符合程度评测

坊间有非常多的 C/C++ JSON 库,怎么选择是一个难题。 [nativejson-benchmark](https://github.com/miloyip/nativejson-benchmark)应该是史上第一个评测了28个C/C++开源JSON程序库的开源项目,它评测了每个库是否符合 JSON 标准 (RFC7159, ECMA-404),并且在性能上测试了各个操作(如解析、生成)的耗时、内存用量等数据,甚至可执行文件的大小也有统计。 这个项目也希望能够通过互相学习借镜,提升现时或未来的 JSON 程序库品质...

55
135
发表了资讯
2015/04/24 00:00

RapidJSON 1.0 正式版发布,C++的JSON开发包

RapidJSON 1.0 正式版发布,该版本在 1.0 Beta 的基础上实现了 100% 单元测试的覆盖率。 其他方面的改进包括: Fixed a bug in trimming long number sequence (4824f12) Fix double quote in unicode escape (#288) Fix negative zero roundtrip (double only) (#289) Remove an invalid Document::ParseInsitu() API (e7f1c6d) Remove dead branches and add more unit tests for coverage Standardize behavior of memcpy()...

6
40
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2018/02/08 16:18

rapidjson的使用

1、包含头文件 #include "rapidjson/stringbuffer.h" #include "rapidjson/document.h" #include "rapidjson/reader.h" #include "rapidjson/writer.h" using namespace rapidjson; 2、读json字符串内容 string str = "{"name":"qfl","age":20,"letter":["a","b","c"],"location":{"province":"fujian","city":"xiamen","number":16},"book":[{"name":"book1","isbn":"123"},{"name":"book2","isbn":"456"}],"healthy":true}"; ...

0
0
发表了博客
2018/12/15 22:41

rapidjson 简单使用

rapidjson 相较于 jsoncpp 最方便的一点就在于在c++ 项目中只需要包含rapidjson 的头文件就能使用,而jsoncpp 需要使用相同平台下编译出来的lib文件进行使用,用起来没有rapidjson 方便。 通过开源作者的说明,rapidjson 速度快,性能可与strlen() 相比。 以下是一些关于rapidjson 的简单用法: 使用之前只需要将对应的头文件包含进来 #include "include/rapidjson/document.h" #include "include/rapidjson/writer.h" #inclu...

0
0
发表了博客
2020/09/12 11:09

【c++】rapidjson实践

rapidjson以其高效获得很大的使用,在自己的使用中,遇到了一些不知所措的错误,在实践中把自己遇到的问题记录下来,为大家解决问题方便。 1.解析string到document std::string str("{}"); RAPIDJSON_NAMESPACE::Document document; document.Parse(str.c_str()); if (document.HasParseError()) { RAPIDJSON_NAMESPACE::ParseErrorCode errCode = document.GetParseError(); } 2.设置Int到document RAPIDJSON_NAMESPACE::Doc...

0
0
发表了博客
2019/04/10 10:10

(2)RapidJson的详解及使用

本节主要介绍RapidJson是如何使用的。 (1)RapidJson是什么 RapidJson是一个跨平台的c++的json的解析器和生成器; 相比较jsoncpp库,RapidJson只有头文件,容易安装; RapidJSON 不依赖STL和boost等外部库独立; 只使用如下文件:<cstdio>, <cstdlib>, <cstring>, <inttypes.h>, <new>, <stdint.h>; 高性能,使用模版及内联函数去降低函数调用开销、内部经优化的 Grisu2 及浮点数解析实现、可选的 SSE2/SSE4.2 支持. (2)R...

0
0
发表了博客
2018/08/07 12:01

spdlog&rapidjson 使用记录

项目中需要记录log以及读写json,对比后选择了spdlog以及rapidjson。 SPDLog 对于log只是要求能够记录到文件中以及能够过滤,选择spdlog是因为这个只需要包含头文件即可使用,不依赖第三方库,使用简单,而且功能全面,至少足够目前使用。 用法: 下载【https://github.com/gabime/spdlog】文件后拷贝到项目工程目录,直接include即可。 1 std::shared_ptr<spdlog::logger> logger; 2 logger = spdlog::basic_logger_mt("basic...

0
0
发表了博客
2019/09/02 17:59

rapidjson解析与构造实例

void rapidjson1(){ rapidjson::StringBuffer s; rapidjson::Writer<rapidjson::StringBuffer> writer(s); writer.StartObject(); // Between StartObject()/EndObject(), writer.Key("hello"); // output a key, writer.String("world"); // follow by a value. writer.Key("t"); writer.Bool(true); writer.Key("f"); writer.Boo...

0
0
发表了博客
2019/06/24 16:49

rapidjson之原位解析(Insitu parse)

什么是原位解析 一种空间复杂度为O(1)的解析方式。正常解析方式需要将JSON字符串复制到其他缓冲区进行解析,这样将会消耗时间和空间复杂度。而原位解析则在JSON字符串所在的原空间进行操作,效率比普通解析高! 优点:效率高; 缺点:原始JSON字符串将被修改。

0
0
发表了博客
2014/08/20 16:37

C++ rapidjson的使用

//引入以下头文件 #include <external/json/document.h> #include <external/json/writer.h> #include <external/json/stringbuffer.h> // 把数据写入json串 rapidjson::Document document; document.SetObject(); rapidjson::Document::AllocatorType& allocator = document.GetAllocator(); rapidjson::Value array(rapidjson::kArrayType); for (int i=0; i <3; i++) { rapidjson::Value object(rapidjson::kObjectType); ob...

0
0
发表了博客
2020/03/10 22:44

cocos-2d解决rapidjson的string参数转换

解决方法 AddMember的传入的参数不是string, 所以会报错 本质就是把string类型转换成 参数的类型 username = "string"; rapidjson::Document document; document.SetObject(); rapidjson::Document::AllocatorType & allocator = document.GetAllocator(); document.AddMember("username", rapidjson::Value(username.c_str(), allocator), allocator); document.AddMember("passowrd", rapidjson:...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2012/10/31 21:06

哪个哥们写的 rapidjson 真不赖啊

哪个哥们写的 rapidjson 真不赖啊 比jsoncpp快了 至少3倍 国产开源还是有牛逼的

6
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
6 评论
261 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部