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();
相关推荐
GISer_Jing1 分钟前
前端GEO优化:AI时代的SEO新战场
前端·人工智能
没想好d4 分钟前
通用管理后台组件库-4-消息组件开发
前端
文艺理科生5 分钟前
Google A2UI 解读:当 AI 不再只是陪聊,而是开始画界面
前端·vue.js·人工智能
晴栀ay8 分钟前
React性能优化三剑客:useMemo、memo与useCallback
前端·javascript·react.js
JS_GGbond8 分钟前
JavaScript继承大冒险:从“原型江湖”到“class殿堂”
前端
XiaoYu20028 分钟前
第6章 Postgres数据库安装
前端·postgresql
CodeAllen嵌入式9 分钟前
Rust 正式成为 Linux 永久核心语言
linux·开发语言·rust
洛卡卡了9 分钟前
从活动编排到积分系统:事件驱动在业务系统中的一次延伸
前端·后端·面试
知其然亦知其所以然10 分钟前
别再死记硬背了,一篇文章搞懂 JS 乘性操作符
前端·javascript·程序员
JS_GGbond13 分钟前
前端大扫除:JS垃圾回收与那些“赖着不走”的内存泄露
前端