diff --git a/tdutils/td/utils/JsonBuilder.cpp b/tdutils/td/utils/JsonBuilder.cpp index 1fc0169a..4e5e3d90 100644 --- a/tdutils/td/utils/JsonBuilder.cpp +++ b/tdutils/td/utils/JsonBuilder.cpp @@ -619,11 +619,22 @@ Result get_json_object_bool_field(JsonObject &object, Slice name, bool is_ } Result get_json_object_int_field(JsonObject &object, Slice name, bool is_optional, int32 default_value) { - TRY_RESULT(value, get_json_object_field(object, name, JsonValue::Type::Number, is_optional)); - if (value.type() == JsonValue::Type::Null) { + for (auto &field_value : object) { + if (field_value.first == name) { + if (field_value.second.type() == JsonValue::Type::String) { + return to_integer_safe(field_value.second.get_string()); + } + if (field_value.second.type() == JsonValue::Type::Number) { + return to_integer_safe(field_value.second.get_number()); + } + + return Status::Error(400, PSLICE() << "Field \"" << name << "\" must be of type Number"); + } + } + if (is_optional) { return default_value; } - return to_integer_safe(value.get_number()); + return Status::Error(400, PSLICE() << "Can't find field \"" << name << "\""); } Result get_json_object_double_field(JsonObject &object, Slice name, bool is_optional, double default_value) {