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 {
39 using Value = formats::
json::Value;
46 class ObjectGuard
final {
48 explicit ObjectGuard(StringBuilder& sw);
57 class ArrayGuard
final {
59 explicit ArrayGuard(StringBuilder& sw);
68 std::string_view GetStringView()
const;
71 void WriteString(std::string_view value);
72 void WriteBool(
bool value);
73 void WriteInt64(int64_t value);
74 void WriteUInt64(uint64_t value);
75 void WriteDouble(
double value);
78 void Key(std::string_view sw);
83 void WriteValue(
const Value& value);
87 utils::FastPimpl<Impl, 112, 8> impl_;
90void WriteToStream(
bool value, StringBuilder& sw);
91void WriteToStream(
long long value, StringBuilder& sw);
92void WriteToStream(
unsigned long long value, StringBuilder& sw);
93void WriteToStream(
int value, StringBuilder& sw);
94void WriteToStream(
unsigned value, StringBuilder& sw);
95void WriteToStream(
long value, StringBuilder& sw);
96void WriteToStream(
unsigned long value, StringBuilder& sw);
97void WriteToStream(
double value, StringBuilder& sw);
98void WriteToStream(
const char* value, StringBuilder& sw);
99void WriteToStream(std::string_view value, StringBuilder& sw);
100void WriteToStream(
const formats::
json::Value& value, StringBuilder& sw);
101void WriteToStream(
const std::string& value, StringBuilder& sw);
103void WriteToStream(std::chrono::system_clock::time_point tp, StringBuilder& sw);