rapidjson 打包过程插入对象

开发过程中遇到一种情况,在打包过程中插入一个字符串(里面是json对象),
官方文档 没看到相关例子,不知道是不是自己粗心没找到。方法RawValue其实是一个通用打包方法,一般情况我们都调用的是String()、Int()等方法,解决了使用rapidjson的最后一个屏障

例如:

cpp 复制代码
rapidjson::StringBuffer strBuf;
rapidjson::Writer<rapidjson::StringBuffer>writer(strBuf);
writer.StartObject();

writer.Key("Data");
writer.StartObject();

//打包过程中插入一个对象
char c[512] = "{\"a\":\"1111\",\"b\":2,\"c\":true,\"d\":[1,2,3]}";
writer.Key("userdata");
writer.RawValue(c, strlen(c), rapidjson::kObjectType);

writer.Key("Language");
writer.String("zh");
writer.Key("Metrology");
writer.Int(1);
writer.Key("Beep");
writer.Bool(true);
	
// 快捷键车型信息保存
writer.Key("F01");
writer.StartObject();
writer.Key("Name");
writer.String("F01");
writer.Key("VehicleId");
writer.String("F01.VehicleId");
writer.Key("Path");
writer.String("F01.Path");
writer.EndObject();
	
writer.Key("Items");
writer.StartArray();
for (map<string, string>::iterator it = mArr.begin(); it != mArr.end(); ++it)
{
	if (strlen(it->second) <= 0)
		continue;

	writer.StartObject();
	writer.Key("Label");
	writer.String(it->first.c_str());
	writer.Key("Value");
	writer.String(it->second.c_str());
	writer.EndObject();
}
writer.EndArray();

writer.EndObject();
writer.EndObject();

return strBuf.GetString();
相关推荐
新手上路狂踩坑17 分钟前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox
ordinary9032 分钟前
指令-v-for的key
前端·javascript·vue.js
rpa_top35 分钟前
RPA 助力电商:自动化商品信息上传,节省人力资源 —— 以影刀 RPA 为例【rpa.top】
大数据·前端·人工智能·自动化·rpa
新时代农民工--小明36 分钟前
前端自动化部署更新,自动化打包部署
运维·前端·自动化
前端Hardy1 小时前
HTML&CSS:酷炫的3D开关控件
前端·javascript·css·3d·html
小马超会养兔子1 小时前
如何写一个数字老虎机滚轮
开发语言·前端·javascript·vue
Web打印1 小时前
web打印插件 HttpPrinter 使用半年评测
javascript·json·firefox·jquery·html5
m0_672449601 小时前
前端(组件传参案例)
前端
fnd_LN1 小时前
Linux文件目录 --- 复制命令CP、递归复制目录、软连接、硬链接
linux·运维·服务器
devotemyself1 小时前
vue的ElMessage的css样式不生效
前端·css·vue.js