diff --git a/src/nostalgia/studio/lib/json_read.hpp b/src/nostalgia/studio/lib/json_read.hpp index 94f23e6c..c6301184 100644 --- a/src/nostalgia/studio/lib/json_read.hpp +++ b/src/nostalgia/studio/lib/json_read.hpp @@ -50,6 +50,9 @@ class JsonReader { ox::Error op(QJsonValueRef src, QString *dest); + template + ox::Error op(QJsonValueRef src, T *dest); + }; template @@ -65,11 +68,18 @@ ox::Error JsonReader::op(QString fieldName, QVector *dest) { auto a = m_src[fieldName].toArray(); dest->resize(a.size()); for (int i = 0; i < dest->size(); i++) { - err |= op(a[i], &dest->at(i)); + err |= op(a[i], &(*dest)[i]); } return err; }; +template +ox::Error JsonReader::op(QJsonValueRef src, T *dest) { + auto obj = src.toObject(); + auto reader = JsonReader(obj); + return ioOp(&reader, dest); +} + template int readJson(QString json, T *dest) { auto obj = QJsonDocument::fromJson(json.toUtf8()).object();