rapidjson 简单封装
rapidjson 简单封装https://github.com/miloyip/rapidjson RapidJSON是一个C++的JSON解析器及生成器。它的灵感来自RapidXml。 RapidJSON小而全。它同时支持SAX和DOM风格的API。SAX解析器只有约500行代码。 代码块代码块语法遵循标准markdown代码,例如: #include "json.h"
#include <vector>
#include <map>
#include <iostream>
#include <string>
using namespace std;
void map2obj()
{
Value v2(rapidjson::kObjectType);
map<string,string> map_ss;
string key = "key";
string val = "value";
map_ss[key] = val;
json_map_obj(v2,map_ss);
std::cout<<json_encode(v2)<<"n";
}
void vec2arr()
{
vector<std::string> vi;
char c[] = "value1";
std::string str("value2");
vi.push_back(c);
vi.push_back(str);
json_mk_array(v1); // 生成数组对象
json_vector_array(v1,vi); // 将vi转换为 v1
std::cout<<json_encode(v1)<<"n";
}
void addmerber()
{
json_mk_obj(v3);
json_add_member(v3,"zhao","xiaobiao");
// v3["xiao"] = "biao"; // 这个地方编译出错 operations [] 只有取操作
std::cout<<json_encode(v3)<<"n";
}
void push_back()
{
json_mk_array(v1);
json_push_back(v1,"arr_number1");
json_push_back(v1,"arr_number2");
json_push_back(v1,"arr_number1");
std::cout<<json_encode(v1)<<"n";
json_arr_erase(v1,"arr_number1");
std::cout<<json_encode(v1)<<"n";
json_arr_erase_all(v1,"arr_number1");
std::cout<<json_encode(v1)<<"n";
json_mk_array(v2);
json_push_back(v2,1);
json_push_back(v2,2);
std::cout<<json_encode(v2)<<"n";
json_arr_erase(v2,1);
std::cout<<json_encode(v2)<<"n";
}
void make_json()
{
json_mk_obj(o);
json_mk_array(a);
json_push_back(a,33);
std::cout<<json_encode(a)<<"n";
json_mk_array(aa);
json_push_back(aa,a);
std::cout<<json_encode(aa)<<"n";
json_add_member(o,"arr",aa);
json_add_member(o,"add",std::string("adddf"));
std::cout<<json_encode(o)<<"n";
}
unsigned int deep = 10;
void recursion(Value &a)
{
if(deep--) {
json_mk_array(aa);
recursion(aa);
json_push_back(a,aa);
return;
}
json_push_back(a,"value");
}
int main()
{
map2obj();
vec2arr();
addmerber();
push_back();
make_json();
json_mk_array(a);
recursion(a);
std::cout<<json_encode(a)<<"n";
return 0;
}
输出 {"key":"value"}
["value1","value2"]
{"zhao":"xiaobiao"}
["arr_number1","arr_number1","arr_number2","arr_number1"]
["arr_number1","arr_number1"]
["arr_number2"]
[1,2]
[2]
[33]
[[33]]
{"arr":[[33]],"add":"adddf"}
[[[[[[[[[[["value"]]]]]]]]]]]
经过一次简单的封装之后用起来是不是要比直接操作 rapidjson API更加清爽一点呢? 代码下载地址 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |