7#include <google/protobuf/struct.pb.h>
8#include <google/protobuf/util/json_util.h>
10#include <userver/formats/json/serialize.hpp>
11#include <userver/formats/json/value.hpp>
13USERVER_NAMESPACE_BEGIN
19extern const google::protobuf::util::JsonPrintOptions kDefaultJsonPrintOptions;
20extern const google::protobuf::util::JsonParseOptions kDefaultJsonParseOptions;
22void FromJsonStringImpl(
23 std::string_view json_string,
24 google::protobuf::Message& output,
25 const google::protobuf::util::JsonParseOptions& options
37MessageToJson(
const google::protobuf::Message& message,
const google::protobuf::util::JsonPrintOptions& options);
46ToJsonString(
const google::protobuf::Message& message,
const google::protobuf::util::JsonPrintOptions& options);
50template <
typename Message>
59template <
typename Message>
68template <
typename Message>
71 impl::FromJsonStringImpl(json_string, message, impl::kDefaultJsonParseOptions);
77template <
typename Message>
78Message
FromJsonString(std::string_view json_string,
const google::protobuf::util::JsonParseOptions& options) {
80 impl::FromJsonStringImpl(json_string, message, options);
114template <
typename Message,
typename = std::enable_if_t<std::is_base_of_v<google::protobuf::Message, Message>>>
116 return ugrpc::JsonToMessage<Message>(value);
121google::protobuf::Value Parse(
const json::
Value& value,
To<google::protobuf::Value>);
124google::protobuf::Struct Parse(
const json::
Value& value,
To<google::protobuf::Struct>);
127google::protobuf::ListValue Parse(
const json::
Value& value,
To<google::protobuf::ListValue>);