From afa48710283afba508f244eda6770bac4aec2e6a Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 25 Mar 2019 18:09:46 +0300 Subject: [PATCH] Allow String as a Number in get_json_object_int_field. GitOrigin-RevId: f7c17eb1f6f8caa3d078d4eafe2de3b58e34002f --- tdutils/td/utils/JsonBuilder.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tdutils/td/utils/JsonBuilder.cpp b/tdutils/td/utils/JsonBuilder.cpp index 1fc0169ab..4e5e3d900 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) {