userver: userver/formats/json/parser/parser_json.hpp Source File
Loading...
Searching...
No Matches
parser_json.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/formats/json/parser/parser_json.hpp
4/// @brief @copybrief formats::json::parser::JsonValueParser
5/// @ingroup userver_universal
6
7#include <userver/formats/json/parser/typed_parser.hpp>
8#include <userver/formats/json/value.hpp>
9#include <userver/utils/fast_pimpl.hpp>
10
11USERVER_NAMESPACE_BEGIN
12
13namespace formats::json::parser {
14
15/// SAX-parser for formats::json::Value
16class JsonValueParser final : public TypedParser<Value> {
17public:
18 JsonValueParser();
19 ~JsonValueParser() override;
20
21 JsonValueParser(const JsonValueParser&) = delete;
22 JsonValueParser(JsonValueParser&&) = delete;
23
24 void Null() override;
25 void Bool(bool) override;
26 void Int64(int64_t) override;
27 void Uint64(uint64_t) override;
28 void Double(double) override;
29 void String(std::string_view) override;
30 void StartObject() override;
31 void Key(std::string_view key) override;
32 void EndObject(size_t) override;
33 void StartArray() override;
34 void EndArray(size_t) override;
35
36 std::string Expected() const override;
37
38private:
39 void MaybePopSelf();
40
41 std::string GetPathItem() const override { return {}; }
42
43 struct Impl;
44 utils::FastPimpl<Impl, 127, 8> impl_;
45};
46
47} // namespace formats::json::parser
48
49USERVER_NAMESPACE_END