From 37b8436ebb5d440b43da51781d52aa991a5a5f8d Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Wed, 29 Jun 2016 17:32:42 +0100 Subject: [PATCH] refs #679 Missing values in json should not cause members of default-constructed object to be overwritten. --- src/blackmisc/json.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/blackmisc/json.h b/src/blackmisc/json.h index fb1c7e1a0..ad4df9348 100644 --- a/src/blackmisc/json.h +++ b/src/blackmisc/json.h @@ -303,7 +303,10 @@ namespace BlackMisc { baseConvertFromJson(static_cast *>(derived()), json); auto meta = introspect().without(MetaFlags()); - meta.forEachMemberName(*derived(), [ & ](auto & member, const QString & name) { json.value(name) >> member; }); + meta.forEachMemberName(*derived(), [ & ](auto & member, const QString & name) + { + if (json.contains(name)) { json.value(name) >> member; } + }); } //! Assign from JSON object string