9#include <userver/formats/json/string_builder_fwd.hpp>
10#include <userver/formats/json/value.hpp>
11#include <userver/formats/serialize/to.hpp>
12#include <userver/formats/serialize/write_to_stream.hpp>
13#include <userver/utils/fast_pimpl.hpp>
15USERVER_NAMESPACE_BEGIN
17namespace formats::json {
34 using Value = formats::json::
Value;
41 class ObjectGuard
final {
43 explicit ObjectGuard(StringBuilder& sw);
52 class ArrayGuard
final {
54 explicit ArrayGuard(StringBuilder& sw);
63 std::string_view GetStringView()
const;
66 void WriteString(std::string_view value);
67 void WriteBool(
bool value);
68 void WriteInt64(int64_t value);
69 void WriteUInt64(uint64_t value);
70 void WriteDouble(
double value);
73 void Key(std::string_view sw);
78 void WriteValue(
const Value& value);
82 utils::FastPimpl<Impl, 112, 8> impl_;
85void WriteToStream(
bool value, StringBuilder& sw);
86void WriteToStream(
long long value, StringBuilder& sw);
87void WriteToStream(
unsigned long long value, StringBuilder& sw);
88void WriteToStream(
int value, StringBuilder& sw);
89void WriteToStream(
unsigned value, StringBuilder& sw);
90void WriteToStream(
long value, StringBuilder& sw);
91void WriteToStream(
unsigned long value, StringBuilder& sw);
92void WriteToStream(
double value, StringBuilder& sw);
93void WriteToStream(
const char* value, StringBuilder& sw);
94void WriteToStream(std::string_view value, StringBuilder& sw);
95void WriteToStream(
const formats::json::
Value& value, StringBuilder& sw);
96void WriteToStream(
const std::string& value, StringBuilder& sw);
98void WriteToStream(std::chrono::system_clock::time_point tp, StringBuilder& sw);