diff --git a/AK/JsonParser.cpp b/AK/JsonParser.cpp index 54fdbe4888..9d604fa2a8 100644 --- a/AK/JsonParser.cpp +++ b/AK/JsonParser.cpp @@ -31,12 +31,12 @@ void JsonParser::consume_while(C condition) } template -String JsonParser::extract_while(C condition) +Vector JsonParser::extract_while(C condition) { - Vector buffer; + Vector buffer; while (condition(peek())) buffer.append(consume()); - return String::copy(buffer); + return buffer; }; void JsonParser::consume_whitespace() @@ -95,7 +95,7 @@ String JsonParser::consume_quoted_string() return String::copy(buffer); } -JsonValue JsonParser::parse_object() +JsonObject JsonParser::parse_object() { JsonObject object; consume_specific('{'); @@ -119,7 +119,7 @@ JsonValue JsonParser::parse_object() return object; } -JsonValue JsonParser::parse_array() +JsonArray JsonParser::parse_array() { JsonArray array; consume_specific('['); @@ -145,7 +145,8 @@ JsonValue JsonParser::parse_string() JsonValue JsonParser::parse_number() { - auto number_string = extract_while([](char ch) { return ch == '-' || (ch >= '0' && ch <= '9'); }); + auto number_buffer = extract_while([](char ch) { return ch == '-' || (ch >= '0' && ch <= '9'); }); + StringView number_string(number_buffer.data(), number_buffer.size()); bool ok; auto value = JsonValue(number_string.to_uint(ok)); if (!ok) diff --git a/AK/JsonParser.h b/AK/JsonParser.h index 76f7d7e5bf..343530d7f4 100644 --- a/AK/JsonParser.h +++ b/AK/JsonParser.h @@ -23,8 +23,8 @@ private: void consume_specific(char expected_ch); void consume_string(const char*); String consume_quoted_string(); - JsonValue parse_array(); - JsonValue parse_object(); + JsonArray parse_array(); + JsonObject parse_object(); JsonValue parse_number(); JsonValue parse_string(); JsonValue parse_false(); @@ -36,7 +36,7 @@ private: void consume_while(C); template - String extract_while(C); + Vector extract_while(C); StringView m_input; int m_index { 0 };