C++ JSON 库- RapidJSON

   编写网络应用软件,经常要使用json格式。C++ 程序使用哪一个库好呢?我选择了Rapidjson。RapidJSON 是腾讯公司贡献的开源项目。特点是安装简单。网络上的实例多,文档齐全。

官网:https://miloyip.github.io/rapidjson/index.html

github:https://github.com/Tencent/rapidjson

安装

$ sudo apt-get update

$ sudo apt-get install rapidjson-dev

 

这是一个headers-only library 的库,安装后,在/usr/include 中包含了rapidjson 目录,但是没有发现任何静态库和动态库文件。打开一个.h 文件,看到其中包含了C++ 的代码。原来这就是传说中的headers-only library 库。

  就C/C++编程语言而言,当编译器可以通过头文件得到一个库包含的所有宏、函数、类的完整定义时,我们称这个库是header-only的。

实例1

#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>
using namespace rapidjson;
int main() {
    // 1. 把 JSON 解析至 DOM。
    const char* json = "{\"project\":\"rapidjson\",\"stars\":10}";
    Document d;
    d.Parse(json);
    // 2. 利用 DOM 作出修改。
    Value& s = d["stars"];
    s.SetInt(s.GetInt() + 1);
    // 3. 把 DOM 转换(stringify)成 JSON。
    StringBuffer buffer;
    Writer<StringBuffer> writer(buffer);
    d.Accept(writer);
    // Output {"project":"rapidjson","stars":11}
    std::cout << buffer.GetString() << std::endl;
    return 0;
}

 编译

$ clang++ test.cpp -o testjson

$ ./testjson

实例2

这个程序演示新建一个json 文件:

#include <iostream>
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
using namespace rapidjson;
int main() {
	Document document; 		// Null
	document.SetObject();	//如果不使用这个方法,AddMember将会报错
	Value value;   			// Null
	value.SetBool(true);	//调用set方法进行设置
	document.AddMember("bool_key",value,document.GetAllocator());
  // 把 DOM 转换(stringify)成 JSON。
    StringBuffer buffer;
    Writer<StringBuffer> writer(buffer);
    document.Accept(writer);
    std::cout << buffer.GetString() << std::endl;
    return 0;
}

小结

     rapidjson 是一个腾讯开源的比较流行的json 库。网上有许多资料可供参考。这里就不再啰嗦了。看来,写软件关键是要选对库!达到事半功倍的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值