如何使用 Rapidjson 解析文件获得"node"?
How to get a "node" parsing a file with Rapidjson?
我正在使用Rapidjson
从文件中检索数据,我想使用该文件数据在游戏中创建实体。因此,我的文件定义了某个实体是什么(在本例中,每个船舶的参数和要创建的组件)。文件如下(对于一艘名为无畏舰的船只):
{
"dreadnought" : {
"parameters": {
"image": "data/dreadnought/dreadnought_ship.png",
"linearSpeed" : 10,
"angularSpeed" : 20,
"energy" : 20,
"hitpoints" : 50
},
"components" : {
"primaryWeapon" : {
"name" : "fusionBlaster",
"energyConsumed" : 2,
"cooldown" : 5
},
"secondaryWeapon" : {
"name" : "laserBots",
"energyConsumed" : 2,
"cooldown" : 5
},
"ai" : {
"name" : "dreadnoughtAI"
}
}
}
}
我想要的是将"无畏号"作为一个对象放入一个变量中,这样我就可以继续查询这个变量了。类似于使用Rapidxml
解析XML时所做的操作:
xml_document<> doc;
doc.parse<0>((char*)buffer.ToCString());
xml_node<>* rootNode = doc.first_node();
xml_node<>* innerNode = rootNode->first_node("x");
我不能得到的是innerNode
。我想要一些类似的东西:
rapidjson::Object dreadnought;
dreadnought.HasMember("parameters");
...
我试着用这种方式创建一个对象,但我找不到应该在模板中放什么,我甚至不知道这个GenericObject
是否是我需要的:
rapidjson::GenericObject<false, typename ValueT> dreadnought = m_doc["dreadnought"].GetObject();
提前谢谢。
好吧,我偶然发现了一些目前可以工作的东西,尽管我仍然需要检查它是否足以满足我的需求。
const rapidjson::Value &dreadnought = m_doc["dreadnought"];
for (rapidjson::Value::ConstMemberIterator itr = dreadnought.MemberBegin();
itr != dreadnought.MemberEnd(); ++itr) {
std::cout << "name : " << itr->name.GetString() << std::endl;
}
这样,每次我调用包含该代码的函数时,它都会显示:
name : parameters
name : components
所以这就是我想要的。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- node-gyp 的先有鸡还是先有蛋的问题:指向依赖项中的头文件
- 在node-gip binding.gyp文件中,如何根据系统结构(32位、64位)包含不同的库文件
- 上传大文件并解析时使用 Node.js v10.15.1 时出现致命错误
- 如何将第三方 dll、标头和库文件与 Node N-API 一起使用
- node-gyp - 处理".h.in"文件
- 如何使用 Rapidjson 解析文件获得"node"?
- Node.JS/C++/Python - 编辑 Excel .xlsx文件
- 将Node.js+Socket.io封装到OSX可执行文件中的可靠方法?(或C/C++/Objective-C库作为替代
- 从C++Node.js插件渲染文件
- 在构建Node.js/Node-webkit插件时,通过binding.gyp将.cpp文件编译为Objective-C
- Node.js C++将多个CC文件扩展为一个模块
- ofstream没有创建文件(Node.js插件)