jsoncpp和rapidjson哪个好用?
链接:http://www.zhihu.com/question/23654513/answer/46157616
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
标准符合程度(越高越好):
<img src="https://pic3.zhimg.com/0824ee0557ff57fbcdbc98b82477f30a_b.jpg" data-rawwidth="900" data-rawheight="810" class="origin_image zh-lightbox-thumb" width="900" data-original="https://pic3.zhimg.com/0824ee0557ff57fbcdbc98b82477f30a_r.jpg">这个测试分开4个部分:JSON正确性检测(使用这个测试分开4个部分:JSON正确性检测(使用JSON_checker测试集)、解析double的准确性、解析string的正确性、roundtrip测试。
JsonCpp 得88分,算是比较好的了。如果仔细看每个部分(https://rawgit.com/miloyip/nativejson-benchmark/master/sample/conformance.html),就是JSON正确性和roundtrip上有几个问题。而RapidJSON在JSON正确性、string和roundtrip上都是满分,开启了 full precision 选项的话,解析double也是满分。
解析和生成JSON的耗时(越低越好):
<img src="https://pic2.zhimg.com/d995b8cfc3249d112fa9142e3d5e7101_b.jpg" data-rawwidth="900" data-rawheight="833" class="origin_image zh-lightbox-thumb" width="900" data-original="https://pic2.zhimg.com/d995b8cfc3249d112fa9142e3d5e7101_r.jpg"><img src="https://pic4.zhimg.com/70e06ed8e2625bc4d4ba4aec1fda1973_b.jpg" data-rawwidth="900" data-rawheight="765" class="origin_image zh-lightbox-thumb" width="900" data-original="https://pic4.zhimg.com/70e06ed8e2625bc4d4ba4aec1fda1973_r.jpg">可见RapidJSON比JsonCpp在解析上快了一个数量级,而生成上也近一个数量级了。可见RapidJSON比JsonCpp在解析上快了一个数量级,而生成上也近一个数量级了。
解析至DOM后的内存用量(越低越好):
<img src="https://pic4.zhimg.com/9b0bdc335161513ab69b7b43de24c6cb_b.jpg" data-rawwidth="900" data-rawheight="833" class="origin_image zh-lightbox-thumb" width="900" data-original="https://pic4.zhimg.com/9b0bdc335161513ab69b7b43de24c6cb_r.jpg">RapidJSON(除了insitu parsing)的内存用量只是JsonCpp的1/4。RapidJSON(除了insitu parsing)的内存用量只是JsonCpp的1/4。
其他方面,例如功能、文档、友好性等,就不在此逐一对比了。
RapidJSON也有一些缺点,例如有些API的设计比较奇怪,可能较难使用。我们会尝试加入一些功能,使不太注重性能的部分能更容易使用。
如果读者仍然想使用 JsonCpp,也可以参考这个评测,帮助改进它。这也是我做此评测的初衷,在开源代码中互相学习,持续改进。
收藏•没有帮助•举报•作者保留权利 收起
于是rapidxml是xml解析库速度最高的,rapidjson也基本上说的上是json解析中最快的了。
收藏•没有帮助•举报•作者保留权利
收藏•没有帮助•举报•作者保留权利
易用性:rapidjson是全头文件包含的,jsoncpp需要你内置编译或编译成库;但rapidjson的一些接口不全,只提供了一层一层的这种解析方式,不能将某一层一次读出来,实际用的时候,要简单封装一下,不然代码量会很大;
性能:rapidjson的性能是现在所有的c++ json解析库里面最高的,没有之一;
容错性:rapidjson只支持标准的 json 格式,很多人以为这个是缺点,我觉得这个是优点,大家都按照标准做,这是成本最低的;
rapidjson之前是托管在Googe Code上的,现在已迁移到GitHub,地址:miloyip/rapidjson · GitHub
另外具体的性能测试,可以参考这个地址:mloskot/json_benchmark · GitHub
这是对流行C++ Json库的一个总结:【总结】各种 JSON 解析库的功能简介
jsoncpp和rapidjson哪个好用?相关推荐
- hiredis和rapidjson库的使用小结
Hiredis 简介 Hiredis 是Redis官方发布的C版本客户端 hiredis库.redis的源码中也有使用hiredis.比如redis-cli和Redis中的哨兵机制和主从机制,集群等都 ...
- android json字符串转成json对象_C++ 两行代码实现json与类对象互转
背景与需求 之前写C#的时候,解析json字符串一般使用的是开源的类库Newtonsoft.Json,方法十分简洁,比如: class 一行代码就能将json字符串转为相应的类对象. 最近写C++需要 ...
- 不念过去,不畏将来,活在当下
这个作业属于哪个课程 软件工程实践2022年春-F班 这个作业要求在哪里 软件工程实践总结&个人技术博客 这个作业的目标 课程回顾与总结.个人技术总结 其他参考文献 <构建之法> ...
- C++实现对Json数据的友好处理
背景 C/C++客户端需要接收和发送JSON格式的数据到后端以实现通讯和数据交互.C++没有现成的处理JSON格式数据的接口,直接引用第三方库还是避免不了拆解拼接.考虑到此项目将会有大量JSON数据需 ...
- JsonCpp 入门教程
1.JsonCpp 简介 首先说一下 JSON.JSON(JavaScript Object Notation) 基于 ECMAScript 的一个子集,是一种独立于语言的轻量级的数据交换格式,易于阅 ...
- rapidjson!完美的C++解析json库
感谢开源! git上有很多解析json的库文件,比如常见的JsonCpp.cJSON等,这些都能满足正常使用.但一旦有了速度.轻量化.简便的追求,就不得不比较一下各个库的优劣了. 荡某乎上的一张各种比 ...
- 开源JSON库Rapidjson与cJSON对比
项目需要解析和构造JSON格式的数据,由于项目使用C++编程,所以比较了一下基于C/C++的开源JSON解析库.当前,差不多40多种基于C/C++的开源JSON库在使用,经过一番比较,最终决定在Rap ...
- QtCreator动态编译jsoncpp完美支持x86和arm平台
如果是做嵌入式开发. 在Qt下支持JSon最好的办法,可能不是采用qjson这个库.QJson这个库的实例只提供了x86环境下的编译方法. Installing QJson ------------- ...
- window环境Visual Studio配置:OpenCV,Eigen,jsoncpp
OpenCV 一.计算机 中的配置: 在 计算机 -> 属性 -> 高级系统属性 -> 高级 -> 环境变量 -> 系统变量 -> Path 中添加: D:\Pro ...
最新文章
- 李飞飞:物体识别之后,计算机视觉的进展、目标和前景何在?
- DARPA“终身学习机器”项目取得重大进展
- 【机器学习基础】数学推导+纯Python实现机器学习算法25:CatBoost
- android - 常用知识点以及代码片段(不断更新)
- 深大计算机系有金工实习吗,金工实习报告答案深圳大学拿A答案(精选).pdf
- PHP包管理器PEAR 中爆多个缺陷可发动供应链攻击,已潜伏15年
- ajax跨域请求 html5,HTML5中使用postMessage实现Ajax跨域请求的方法
- 用Nginx作反向代理简单多了
- PAT甲题题解-1010. Radix (25)-二分搜索
- linux oracle查看服务,技术|如何查看 Linux 中所有正在运行的服务
- java 镶嵌创建线程_请教一个 Java 多线程嵌套使用的问题
- 阿里副总裁玄难:藏经阁计划首次在阿里应用落地
- 电脑桌面壁纸的尺寸分类
- OS X 修改网卡 Mac 地址的方法
- 云南开放大学《机械制造基础-形考作业1-6(主观题)》
- Android系统简介
- 冰丝凉席好不好 冰丝凉席怎样 冰丝凉席简介
- 电影《名侦探柯南:万圣节的新娘》观后感
- TI-RTOS学习笔记(三)—— 驱动程序框架
- 中国流量排名前一百名网站