Avoid unnecessary casts in the JSON encoder

This commit is contained in:
Gunnar Beutner 2018-01-11 07:29:34 +01:00
parent e26494bf08
commit 0b03ab854e

View File

@ -81,12 +81,24 @@ static void Encode(yajl_gen handle, const Value& value)
break; break;
case ValueObject: case ValueObject:
if (value.IsObjectType<Dictionary>()) {
EncodeDictionary(handle, value); const Object::Ptr& obj = value.Get<Object::Ptr>();
else if (value.IsObjectType<Array>()) Dictionary::Ptr dict = dynamic_pointer_cast<Dictionary>(obj);
EncodeArray(handle, value);
else if (dict) {
yajl_gen_null(handle); EncodeDictionary(handle, dict);
break;
}
Array::Ptr arr = dynamic_pointer_cast<Array>(obj);
if (arr) {
EncodeArray(handle, arr);
break;
}
}
yajl_gen_null(handle);
break; break;
case ValueEmpty: case ValueEmpty: