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,11 +81,23 @@ 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) {
EncodeDictionary(handle, dict);
break;
}
Array::Ptr arr = dynamic_pointer_cast<Array>(obj);
if (arr) {
EncodeArray(handle, arr);
break;
}
}
yajl_gen_null(handle); yajl_gen_null(handle);
break; break;