Add some missing field checks to JSON reader

This commit is contained in:
Gary Talent 2017-09-08 18:06:27 -05:00
parent 3e90ec87b9
commit 11c7c49d7b

View File

@ -59,18 +59,26 @@ class JsonReader {
template<typename T> template<typename T>
ox::Error JsonReader::op(QString fieldName, T *dest) { ox::Error JsonReader::op(QString fieldName, T *dest) {
auto obj = m_src[fieldName].toObject(); if (m_src.contains(fieldName)) {
auto reader = JsonReader(obj); auto obj = m_src[fieldName].toObject();
return ioOp(&reader, dest); auto reader = JsonReader(obj);
return ioOp(&reader, dest);
} else {
return JSON_ERR_FIELD_MISSING;
}
}; };
template<typename T> template<typename T>
ox::Error JsonReader::op(QString fieldName, QVector<T> *dest) { ox::Error JsonReader::op(QString fieldName, QVector<T> *dest) {
ox::Error err = 0; ox::Error err = 0;
auto a = m_src[fieldName].toArray(); if (m_src.contains(fieldName)) {
dest->resize(a.size()); auto a = m_src[fieldName].toArray();
for (int i = 0; i < dest->size(); i++) { dest->resize(a.size());
err |= op(a[i], &(*dest)[i]); for (int i = 0; i < dest->size(); i++) {
err |= op(a[i], &(*dest)[i]);
}
} else {
err |= JSON_ERR_FIELD_MISSING;
} }
return err; return err;
}; };