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();
相关推荐
螺丝钉tina14 分钟前
[Playwright ][16]Playwright + TypeScript API 自动化测试实战:API测试
前端·javascript·typescript
Patrick_Wilson35 分钟前
读懂一个 Go JSON 处理函数:从输入数据追踪结构体、校验与错误返回
go·json·编程语言
小天源1 小时前
智叟云集系统 · 架构与职责分层
服务器·前端·数据库
女神下凡1 小时前
芯参谋(85):Linux_PPI_NAND_驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件·设计规范
12.=0.2 小时前
【持续更新】shell脚本 + Linux命令
linux·运维·服务器
Escalating_xu2 小时前
【Linux 网络编程】五种 I/O 模型与非阻塞 I/O:从“等数据”到正确处理 EAGAIN
java·linux·网络
无言听风雨丶3 小时前
Linux 容器本质探秘:Cgroup 与 Namespace 深度解析与实战
linux·运维·服务器·kubernetes
万联WANFLOW3 小时前
CVE-2026-98432 等漏洞自查:AI 查出的 Linux、Windows 漏洞,运维怎么确认受不受影响
linux·运维·windows·网络安全
Highcharts.js3 小时前
React 中原生支持使用 JSX 组件配置自定义表格 Highcharts Grid
前端·javascript·react.js·前端框架·jsx·highcharts·自定义表格
OPEN-F3 小时前
Ubuntu 自动登录后 GNOME 远程桌面连不上?一次登录钥匙环锁定的排查与永久修复
linux·运维·ubuntu