userver: userver/dump/json_helpers.hpp Source File
Loading...
Searching...
No Matches
json_helpers.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/dump/json_helpers.hpp
4/// @brief Convenience functions to load and dump as JSON in classes derived
5/// from components::CachingComponentBase.
6
7#include <memory>
8
9#include <userver/dump/common.hpp>
10#include <userver/dump/operations.hpp>
11#include <userver/dump/unsafe.hpp>
12#include <userver/formats/json/serialize.hpp>
13#include <userver/formats/json/string_builder.hpp>
14#include <userver/formats/json/value.hpp>
15
16USERVER_NAMESPACE_BEGIN
17
18namespace dump {
19
20/// @brief Convenience function to use in
21/// components::CachingComponentBase::WriteContents override to dump a type in
22/// a human readable JSON format.
23///
24/// @see @ref scripts/docs/en/userver/cache_dumps.md
25template <typename T>
26void WriteJson(Writer& writer, const T& contents) {
27 formats::json::StringBuilder sb;
28 WriteToStream(contents, sb);
30 WriteStringViewUnsafe(writer, "\n");
31}
32
33/// @brief Convenience function to use in
34/// components::CachingComponentBase::ReadContents override to load a dump in
35/// a human readable JSON format.
36///
37/// @see @ref scripts/docs/en/userver/cache_dumps.md
38template <typename T>
39std::unique_ptr<const T> ReadJson(Reader& reader) {
40 return std::make_unique<const T>(formats::json::FromString(ReadEntire(reader)).As<T>());
41}
42
43} // namespace dump
44
45USERVER_NAMESPACE_END