谁给推荐一个C++的JSON库

2019-03-25 13:44|来源: 网路

现在的一个项目,有JAVA的系统,有C++的服务器端,java端和C++服务器通信使用JSON格式,之前用了一个C的库,叫cJSON,但是出于以下原因,想换一个,最好是C++的库。
1. 尽量减少代码量,希望可以像操作map、list一样能够很容易的操作JSON对象。
2. 能够有可能使用内存池。由于C++端与java端需要比较频繁的交互,数据都是JSON格式的,就会频繁的创建、销毁对象。虽然说目前性能没什么问题,但是,还是想看看能否使用内存池。
3. 由于现在用的C的库,都是指针操作,当对JSON对象中的某一节点进行修改时,需要非常小心的避免内存泄露。希望新的JSON库能够减少这方面的烦恼。

希望各位提供一些意见,或者推荐你们以前使用过的JSON的库。

目前不考虑使用别的类型的协议,不过如果有好的建议以供参考的话,也可以提出来讨论讨论。

问题补充:
iihero 写道
尝试一下这个:
http://code.google.com/p/sjson/

Symbian C++?

问题补充:
yqin 写道

这个里面的C++的意见json.org里面的C++库我都试过,不太合适。

问题补充:
iihero 写道
其实:
http://sourceforge.net/projects/jsoncpp/
这个已经是相当的好了。


这个我当时大概测试过,和现在用的C的库比较起来,慢了1倍多2倍左右(就是创建一个比较大的json对象,转成字符串,再转成json)。

相关问答

更多
  • 你好: 学习VC++不单单是要有面向对象的概念,应该是多方面知识的积累,当然面向对象是学习vc++的基础,因为vc的mfc类库就是对windows API的封装,提到封装当然就已经用到了面向的对象概念,以你现在的基础,以下是我的一点小建议 1.首先是学习计算机系统的运行原理。你只有在较为深刻地了解了计算机系统的运行原理,才可能会理解代码为什么要这样写,理解一些低层的错误。在此推荐一本书,《深入了解计算机系统》,迅雷 上有下,它能让你在程序员的角度上,对计算机有个深刻的了解,很不错。 2.鉴于你现在的基础,学 ...
  • 有很多种方法可以实现,互斥量,消息列队,以及内存都可以啊!总而言之是用“锁”的机制来实现的! 多线程最好看《linux高级程序设计》! 这个不是很难,很容易懂!
  • C++ json解析[2023-07-24]

    C++ 解析Json——jsoncpp JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录。 Jsoncpp是个跨平台的开源库,下载地址:http://sourceforge.net/projects/jsoncpp/,我下载的是v0.5.0,压缩包大约104K。 方法一:使用Jsoncpp生成的lib文件 解压上面下载的Jsoncpp文件,在jsoncpp-src-0.5.0/m ...
  • 学c++前先学下C语言吧,那个简单,学完再学c++,既有了必要的基础,又拓展了知识面,建议看谭浩强写的《C 语言程序设计 》经典之作,初学者的必经之路,在各大专院校中一般都用的这本书。
  • C++入门可以选择: 《C++ Primer》(有侯捷繁体版和潘爱民简体第三版) 《C++编程思想》,也可以是《Esstion C++》《Think in C++》,后两本只是推荐而已 初级: 《Effective C++》和《More Effective C++》应该是第三版 《Exceptional C++》和《More Exceptional C++》 《C++标准程序库》 中级: 《深度探索C++物件模型》(侯捷翻译) 高级: 《C++设计新思维》(侯捷翻译,先读设计模式) 《C++模板元编程》 《 ...
  • 这真的取决于你在寻找什么。 如果您正在寻找图书馆内的超快速度和快速开发,Boost非常棒。 如果你正在寻找超快的速度,更多的可定制性和跨库二进制兼容性,那么Qt是一个很好的解决方案(并不是说Boost也不能做到这一点)。 如果您正在寻找疯狂的互操作性,那么请寻找基于文本的序列化系统,如JSON( jsoncpp ),YAML( yamlcpp )或XML(太多),每个系统都有大约80亿个独立库。 It really depends what you're looking for. If you're loo ...
  • 如果函数可以独立使用(看起来像是,查看你的建议),并且几个函数可以在语义上分组,我绝对选择第二个选项。 选项1:将所有内容放在一个namespace会导致添加太多不同的东西,分组到一个单独的组中。 选项2:我发现它比其他人更直观。 由于库结合了几个完全不同的东西,将所有组分组并将所有这些组分组为具有名称的大namespace (库的名称)似乎是个好主意。 选项3:此选项与选项2几乎相同,但使用class而不是namespace对我来说似乎很糟糕。 C ++标准为此提供了namespace ,使用它们。 但它 ...
  • 在项目导航器(XCode的左侧)中,单击项目上方。 然后: Build Phases -> Link binary with libraries 您可以在此处添加将链接到您的应用程序的所有库和/或框架。 打开此页面,然后将库拖放到库区域内......就是这样! 没有秘密! 如果它不起作用。 你可能是一个错误的库。 尝试使用lipo -info library来检查库架构是否与您尝试使用的相同(在这种情况下为x86_64)。 如果它仍然不起作用。 您可能与C ++不兼容。 在构建中任何libstdc ++和l ...