1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #include "readJsonSrc.h"
- #include <QJsonDocument>
- #include <QJsonObject>
- #include <QFile>
- #include <iostream>
- #include <QVector>
- ReadJsonSrc::ReadJsonSrc(QString filePath)
- {
- QFile srcFile(filePath);
- if(!srcFile.open(QFile::ReadOnly)){
- std::cout<<"can't open file "<<qPrintable(filePath)<<std::endl;
- }
- QJsonObject jsonObj = QJsonDocument::fromJson(QString(srcFile.readAll()).toUtf8()).object();
- srcFile.close();
- readJsonObj(jsonObj);
- }
- void ReadJsonSrc::readJsonObj(QJsonObject obj)
- {
- //收集动画
- QJsonObject collAnim = obj["coll_template"].toObject();
- templateMap["collAnimTemp"] = readTemplate(collAnim);
- //事件
- QJsonObject event = obj["event_template"].toObject();
- templateMap["eventTemp"] = readTemplate(event);
- //动作
- QJsonObject action = obj["action_template"].toObject();
- templateMap["actionTemp"] = readTemplate(action);
- //容器池
- QJsonObject pool = obj["pool_template"].toObject();
- templateMap["poolTemp"] = readTemplate(pool);
- }
- QVector<ReadJsonSrc::Template> ReadJsonSrc::readTemplate(QJsonObject obj)
- {
- QVector<Template> tempVec;
- for(const auto &i:obj){
- QJsonObject tempObj = i.toObject();
- Template temp(tempObj["name"].toString(),tempObj["id"].toString());
- QVector<Fields> fields;
- QJsonObject fieldObj = tempObj["fields"].toObject();
- QStringList fiedsName = fieldObj.keys();
- for(const auto &j:fiedsName){
- QJsonObject content = fieldObj[j].toObject();
- Fields field(j,content["id"].toString(),content["type"].toString(),content["src"].toString(),content["default"].toString());
- fields.push_back(field);
- }
- temp.fields = fields;
- tempVec.push_back(temp);
- }
- return tempVec;
- }
|