Fix json_decode.
GitOrigin-RevId: 82f3beeb83aaa6052207123f22a44da88972e545
This commit is contained in:
parent
2a58cfd1b9
commit
8a8ea50a81
@ -720,8 +720,11 @@ inline Result<JsonValue> json_decode(MutableSlice from) {
|
||||
Parser parser(from);
|
||||
const int32 DEFAULT_MAX_DEPTH = 100;
|
||||
auto result = do_json_decode(parser, DEFAULT_MAX_DEPTH);
|
||||
if (result.is_ok() && !parser.empty()) {
|
||||
return Status::Error("Expected string end");
|
||||
if (result.is_ok()) {
|
||||
parser.skip_whitespaces();
|
||||
if (!parser.empty()) {
|
||||
return Status::Error("Expected string end");
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ REGISTER_TESTS(json)
|
||||
|
||||
using namespace td;
|
||||
|
||||
static void decode_encode(string str) {
|
||||
static void decode_encode(string str, string result = "") {
|
||||
auto str_copy = str;
|
||||
auto r_value = json_decode(str_copy);
|
||||
ASSERT_TRUE(r_value.is_ok());
|
||||
@ -26,7 +26,10 @@ static void decode_encode(string str) {
|
||||
return;
|
||||
}
|
||||
auto new_str = json_encode<string>(r_value.ok());
|
||||
ASSERT_EQ(str, new_str);
|
||||
if (result.empty()) {
|
||||
result = str;
|
||||
}
|
||||
ASSERT_EQ(result, new_str);
|
||||
}
|
||||
|
||||
TEST(JSON, array) {
|
||||
@ -83,4 +86,9 @@ TEST(JSON, kphp) {
|
||||
decode_encode(
|
||||
"{\"keyboard\":[[\"\\u2022 abcdefg\"],[\"\\u2022 hijklmnop\"],[\"\\u2022 "
|
||||
"qrstuvwxyz\"]],\"one_time_keyboard\":true}");
|
||||
decode_encode(
|
||||
" \n { \"keyboard\" : \n [[ \"\\u2022 abcdefg\" ] , \n [ \"\\u2022 hijklmnop\" \n ],[ \n \"\\u2022 "
|
||||
"qrstuvwxyz\"]], \n \"one_time_keyboard\"\n:\ntrue\n}\n \n",
|
||||
"{\"keyboard\":[[\"\\u2022 abcdefg\"],[\"\\u2022 hijklmnop\"],[\"\\u2022 "
|
||||
"qrstuvwxyz\"]],\"one_time_keyboard\":true}");
|
||||
}
|
||||
|
Reference in New Issue
Block a user