22#include "json/value.h"
29Result<Json::Value>
ParseJson(std::string_view input);
32Result<Json::Value>
LoadFromFile(
const std::string& path_to_file);
62 const std::vector<std::string>& selectors) {
63 const Json::Value* traversal = &root;
64 for (
const auto& selector : selectors) {
66 "JSON selector \"{}\" does not exist", selector);
67 traversal = &(*traversal)[selector];
74 const Json::Value& array,
const std::vector<std::string>& selectors) {
75 std::vector<T> result;
76 for (
const auto& element : array) {
77 result.emplace_back(
CF_EXPECT(GetValue<T>(element, selectors)));
83 const std::vector<std::string>& selectors) {
84 const Json::Value* traversal = &root;
85 for (
const auto& selector : selectors) {
86 if (!traversal->isMember(selector)) {
89 traversal = &(*traversal)[selector];
#define CF_EXPECT(...)
Definition: expect.h:149
#define CF_EXPECTF(RESULT, MSG,...)
Definition: expect.h:152
Definition: alloc_driver.h:20
Result< T > As(const Json::Value &v)
bool HasValue(const Json::Value &root, const std::vector< std::string > &selectors)
Definition: json.h:82
Result< Json::Value > ParseJson(std::string_view input)
Definition: json.cpp:35
Result< std::vector< T > > GetArrayValues(const Json::Value &array, const std::vector< std::string > &selectors)
Definition: json.h:73
Result< Json::Value > LoadFromFile(Reader &json_reader)
Definition: json.cpp:46
Result< T > GetValue(const Json::Value &root, const std::vector< std::string > &selectors)
Definition: json.h:61
tl::expected< T, StackTraceError > Result
Definition: result_type.h:30