1#ifndef LINTEL_JSONUTILS_H
2#define LINTEL_JSONUTILS_H
7#include <rapidjson/document.h>
22 inline const rapidjson::Value *
findMember(
const rapidjson::Value &
obj,
const char *
key)
24 if (!
obj.IsObject()) {
return nullptr; }
26 if (
iter ==
obj.MemberEnd()) {
return nullptr; }
32inline const rapidjson::Value *
member(
const rapidjson::Value &
obj,
const char *
key)
41 if (value ==
nullptr || !value->IsString()) {
return false; }
42 out = std::string(value->GetString(), value->GetStringLength());
50 if (value ==
nullptr || !value->IsBool()) {
return false; }
51 out = value->GetBool();
56inline bool getInt(
const rapidjson::Value &
obj,
const char *
key, std::int32_t &
out)
59 if (value ==
nullptr || !value->IsInt()) {
return false; }
60 out = value->GetInt();
68 if (value ==
nullptr) {
return false; }
69 if (value->IsInt64()) {
70 out = value->GetInt64();
71 }
else if (value->IsInt()) {
72 out = value->GetInt();
73 }
else if (value->IsUint()) {
74 out =
static_cast<std::int64_t
>(value->GetUint());
75 }
else if (value->IsUint64()) {
76 out =
static_cast<std::int64_t
>(value->GetUint64());
87 if (value ==
nullptr) {
return false; }
88 if (value->IsUint64()) {
89 out = value->GetUint64();
90 }
else if (value->IsUint()) {
91 out = value->GetUint();
92 }
else if (value->IsInt64()) {
96 }
else if (value->IsInt()) {
97 if (value->GetInt() < 0) {
return false; }
98 out =
static_cast<std::uint64_t
>(value->GetInt());
109 if (value ==
nullptr || !value->IsNumber()) {
return false; }
110 out = value->GetDouble();
const rapidjson::Value * findMember(const rapidjson::Value &obj, const char *key)
Definition JsonUtils.h:22
bool getInt64(const rapidjson::Value &obj, const char *key, std::int64_t &out)
Definition JsonUtils.h:65
const rapidjson::Value * member(const rapidjson::Value &obj, const char *key)
Definition JsonUtils.h:32
bool getInt(const rapidjson::Value &obj, const char *key, std::int32_t &out)
Definition JsonUtils.h:56
bool getBool(const rapidjson::Value &obj, const char *key, bool &out)
Definition JsonUtils.h:47
bool getUint64(const rapidjson::Value &obj, const char *key, std::uint64_t &out)
Definition JsonUtils.h:84
bool getString(const rapidjson::Value &obj, const char *key, std::string &out)
Definition JsonUtils.h:38
bool getDouble(const rapidjson::Value &obj, const char *key, double &out)
Definition JsonUtils.h:106
constexpr std::string_view type_name()
Definition TypeName.h:9