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];
Definition: expected.h:86
#define CF_EXPECT(...)
Definition: result.h:414
#define CF_EXPECTF(RESULT, MSG,...)
Definition: result.h:417
Definition: alloc_utils.cpp:23
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:26
Result< std::vector< T > > GetArrayValues(const Json::Value &array, const std::vector< std::string > &selectors)
Definition: json.h:73
Result< Json::Value > LoadFromFile(SharedFD json_fd)
Definition: json.cpp:37
Result< T > GetValue(const Json::Value &root, const std::vector< std::string > &selectors)
Definition: json.h:61