diff --git a/src/nostalgia/studio/lib/json_read.hpp b/src/nostalgia/studio/lib/json_read.hpp index e2fa84a6..8b781707 100644 --- a/src/nostalgia/studio/lib/json_read.hpp +++ b/src/nostalgia/studio/lib/json_read.hpp @@ -59,18 +59,26 @@ class JsonReader { template ox::Error JsonReader::op(QString fieldName, T *dest) { - auto obj = m_src[fieldName].toObject(); - auto reader = JsonReader(obj); - return ioOp(&reader, dest); + if (m_src.contains(fieldName)) { + auto obj = m_src[fieldName].toObject(); + auto reader = JsonReader(obj); + return ioOp(&reader, dest); + } else { + return JSON_ERR_FIELD_MISSING; + } }; template ox::Error JsonReader::op(QString fieldName, QVector *dest) { ox::Error err = 0; - auto a = m_src[fieldName].toArray(); - dest->resize(a.size()); - for (int i = 0; i < dest->size(); i++) { - err |= op(a[i], &(*dest)[i]); + if (m_src.contains(fieldName)) { + auto a = m_src[fieldName].toArray(); + dest->resize(a.size()); + for (int i = 0; i < dest->size(); i++) { + err |= op(a[i], &(*dest)[i]); + } + } else { + err |= JSON_ERR_FIELD_MISSING; } return err; };