rapidjson使用
2024-08-24 17:17:43
Value构造
Value对象最好先声明后初始化,如果声明直接初始化可能出错。
rapidjson::Value a;
a = val[i];
Value传参
Value传参,最好显式使用右值,如std::move,或使用引用,否则可能出错。
Value移动
document的GetObject是移动的,里面的对象会被销毁。
Value默认都是移动的,传参都需要右值。
拷贝的话:
rapidjson::Document::AllocatorType& allot = config_document_.GetAllocator();
rapidjson::Value cp(rapidjson_value_, allot);
Array和Object的迭代器
Array的迭代器是ValueIterator;
Object的迭代器是MemberIterator;
附上一段dfs代码:
void DfsDocument(rapidjson::Value val) {
// cout << val.GetType() << endl;
if (!val.GetType()) return;
switch (val.GetType()) {
case rapidjson::kNumberType:
cout << val.GetInt() << endl;
break;
case rapidjson::kStringType:
cout << val.GetString() << endl;
break;
case rapidjson::kArrayType:
for (rapidjson::Value::ValueIterator itr = val.GetArray().begin();
itr != val.GetArray().end(); ++itr) {
rapidjson::Value a;
a = *itr;
DfsDocument(std::move(a));
}
break;
case rapidjson::kObjectType:
for (rapidjson::Value::MemberIterator itr = val.GetObject().begin();
itr != val.GetObject().end(); ++itr) {
cout << itr->name.GetString() << endl;
rapidjson::Value a;
a = itr->value;
DfsDocument(std::move(a));
}
default:
break;
}
return;
}
详细使用请参考作者Milo Yip的文档。
最新文章
- java中的反射简单实例
- mysql-1
- OpenCV 第二课 认识图像的存储结构
- Andoird Studio 错误: 非法字符: &#39;\ufeff&#39; 解决方案。
- 使用Pager-taglib进行分页
- Linux时间子系统之(六):POSIX timer
- Java学习笔记43(Spring的jdbc模板)
- 微信小程序星星评价
- centos7升级内核版本
- Core Java 面经
- Compute Shader
- 【源码阅读】VS调试mimikatz-改造法国神器mimikatz执行就获取明文密码
- es5 温故而知新 创建私有成员、私有变量、特权变量的方法
- s:select 标签中list存放map对象的使用
- BPNN
- SignalR 循序渐进(四) Hub的生命周期以及IoC
- aliyun ECS da shang chuang 安装小结
- 转:: 刺鸟:用python来开发webgame服务端(2)
- ueditor UEditor的setContent的时候报错
- 【转】Unity3D 射线Ray实现点击拾取