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();
相关推荐
云水一下13 小时前
从零开始!VMware安装Fedora Workstation 44桌面系统完整教程
前端
wuminyu14 小时前
专家视角看Java字节码加载与存储指令机制
java·linux·c语言·jvm·c++
小码哥_常14 小时前
安卓黑科技:实现多平台商品详情页一键跳转APP
前端
killerbasd14 小时前
还是迷茫 5.3
前端·react.js·前端框架
.小小陈.15 小时前
Linux 线程概念与控制:从底层原理到实战应用
linux·运维·jvm
网络工程小王15 小时前
【LangChain 大模型6大调用指南】调用大模型篇
linux·运维·服务器·人工智能·学习
wangbing112515 小时前
各linux版本的包管理命令
linux·运维·服务器
Joseph Cooper15 小时前
Linux/Android 跟踪技术:ftrace、TRACE_EVENT、atrace、systrace 与 perfetto 入门
android·linux·运维
不会敲代码115 小时前
TCP/IP 与前端性能:从数据包到首次渲染的底层逻辑
前端·tcp/ip
kyriewen15 小时前
奥特曼借GPT-5.5干杯,而你的Copilot正按Token收钱
前端·github·openai