userver: userver/formats/json/serialize_boost_variant.hpp Source File
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
serialize_boost_variant.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/formats/json/serialize_boost_variant.hpp
4/// @brief Serializers for boost::variant types.
5/// @ingroup userver_universal userver_formats_serialize
6
7#include <boost/variant/apply_visitor.hpp>
8#include <boost/variant/variant.hpp>
9
10#include <userver/formats/json/value_builder.hpp>
11#include <userver/formats/serialize/to.hpp>
12
13USERVER_NAMESPACE_BEGIN
14
15namespace formats::serialize {
16
17template <typename... Types>
18formats::json::Value Serialize(const boost::variant<Types...>& value,
19 To<formats::json::Value>) {
20 return boost::apply_visitor(
21 [](const auto& item) {
22 return formats::json::ValueBuilder(item).ExtractValue();
23 },
24 value);
25}
26
27} // namespace formats::serialize
28
29USERVER_NAMESPACE_END