6#include <userver/formats/json/value.hpp>
7#include <userver/formats/parse/to.hpp>
8#include <userver/formats/serialize/to.hpp>
10USERVER_NAMESPACE_BEGIN
12namespace formats::json {
22class Array
final :
private Value {
24 using Value::const_iterator;
25 using Value::const_reverse_iterator;
31 explicit Array(
const Value& value)
39 : Value(std::move(value))
46 explicit Array(ValueBuilder&& builder);
48 Array(
const Array&) =
default;
49 Array(Array&&)
noexcept =
default;
51 Array& operator=(
const Array&) & =
default;
52 Array& operator=(Array&&)
noexcept =
default;
55 const Value&
GetValue()
const& {
return *
this; }
61 using Value::operator[];
64 Value operator[](std::string_view key)
const =
delete;
85 using Value::CheckInBounds;
95 using Value::ConvertTo;
107inline Array Parse(
const Value& value, parse::To<Array>) {
return Array
{value
}; }
109inline Value Serialize(
const Array& array, formats::serialize::To<Value>) {
return Value{array
.GetValue()}; }
111inline Value Serialize(Array&& array, formats::serialize::To<Value>) {
return Value{std::move(array)
.ExtractValue()}; }