readJsonSrc.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include "readJsonSrc.h"
  2. #include <QJsonDocument>
  3. #include <QJsonObject>
  4. #include <QFile>
  5. #include <iostream>
  6. #include <QVector>
  7. ReadJsonSrc::ReadJsonSrc(QString filePath)
  8. {
  9. QFile srcFile(filePath);
  10. if(!srcFile.open(QFile::ReadOnly)){
  11. std::cout<<"can't open file "<<qPrintable(filePath)<<std::endl;
  12. }
  13. QJsonObject jsonObj = QJsonDocument::fromJson(QString(srcFile.readAll()).toUtf8()).object();
  14. srcFile.close();
  15. readJsonObj(jsonObj);
  16. }
  17. void ReadJsonSrc::readJsonObj(QJsonObject obj)
  18. {
  19. //收集动画
  20. QJsonObject collAnim = obj["coll_template"].toObject();
  21. templateMap["collAnimTemp"] = readTemplate(collAnim);
  22. //事件
  23. QJsonObject event = obj["event_template"].toObject();
  24. templateMap["eventTemp"] = readTemplate(event);
  25. //动作
  26. QJsonObject action = obj["action_template"].toObject();
  27. templateMap["actionTemp"] = readTemplate(action);
  28. //容器池
  29. QJsonObject pool = obj["pool_template"].toObject();
  30. templateMap["poolTemp"] = readTemplate(pool);
  31. }
  32. QVector<ReadJsonSrc::Template> ReadJsonSrc::readTemplate(QJsonObject obj)
  33. {
  34. QVector<Template> tempVec;
  35. for(const auto &i:obj){
  36. QJsonObject tempObj = i.toObject();
  37. Template temp(tempObj["name"].toString(),tempObj["id"].toString());
  38. QVector<Fields> fields;
  39. QJsonObject fieldObj = tempObj["fields"].toObject();
  40. QStringList fiedsName = fieldObj.keys();
  41. for(const auto &j:fiedsName){
  42. QJsonObject content = fieldObj[j].toObject();
  43. Fields field(j,content["id"].toString(),content["type"].toString(),content["src"].toString(),content["default"].toString());
  44. fields.push_back(field);
  45. }
  46. temp.fields = fields;
  47. tempVec.push_back(temp);
  48. }
  49. return tempVec;
  50. }