diff --git a/geocoder/hierarchy.cpp b/geocoder/hierarchy.cpp index bff5558aa0..43e334b0bf 100644 --- a/geocoder/hierarchy.cpp +++ b/geocoder/hierarchy.cpp @@ -68,20 +68,24 @@ bool Hierarchy::Entry::DeserializeFromJSONImpl(json_t * const root, string const MYTHROW(base::Json::Exception, ("Not a json object.")); } - json_t * const properties = base::GetJSONObligatoryField(root, "properties"); - json_t * const address = base::GetJSONObligatoryField(properties, "address"); + json_t * properties = nullptr; + FromJSONObject(root, "properties", properties); + json_t * address = nullptr; + FromJSONObject(properties, "address", address); + bool hasDuplicateAddress = false; for (size_t i = 0; i < static_cast(Type::Count); ++i) { Type const type = static_cast(i); string const & levelKey = ToString(type); - auto * levelJson = base::GetJSONOptionalField(address, levelKey); + json_t * levelJson = nullptr; + FromJSONObjectOptionalField(address, levelKey, levelJson); if (!levelJson) continue; - if (json_is_null(levelJson)) - return false; + if (base::JSONIsNull(levelJson)) + return false; string levelValue; FromJSON(levelJson, levelValue);