Bir dosyadan veri almak için Rapidjson
kullanıyorum ve oyunumdaki varlıkları oluşturmak için bu dosya verilerini kullanmak istiyorum. Dolayısıyla, dosyamın belirli bir varlığın ne olduğu (bu durumda, oluşturulacak her bir gemi parametresi ve bileşeni) tanımı vardır. (Tek bir gemi denilen Korkusuz için) aşağıdaki gibi Dosya görünür:Rapidjson ile bir dosyayı ayrıştırmak için "node" nasıl alınır?
{
"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"
}
}
}
}
İstediğim o halde ben bu değişkeni üzerinde sorgulama tutabilir, bir değişkene bir nesne olarak "gemiyi almaktan" elde etmektir. Rapidxml
ile XML ayrıştırılırken yapmanız ne benzer bir şey:
xml_document<> doc;
doc.parse<0>((char*)buffer.ToCString());
xml_node<>* rootNode = doc.first_node();
xml_node<>* innerNode = rootNode->first_node("x");
Anlamadığım şey olamaz innerNode
olduğunu. Ben böyle bir şey isteyeyim:
rapidjson::Object dreadnought;
dreadnought.HasMember("parameters");
...
, ama ben şablonu içinde koymak gerektiğini bulamıyor, ben bile bilmiyorum bu GenericObject
ne olup olmadığını gerekir:
rapidjson::GenericObject<false, typename ValueT> dreadnought = m_doc["dreadnought"].GetObject();
Şimdiden teşekkürler.
Nesnede anahtar/değer çiftlerini yinelemenin yolu budur. –