10 #ifndef GO_PXL_SDK_JSON_H
11 #define GO_PXL_SDK_JSON_H
20 #define GoJsonTypeSpec(type) \
21 template GoPxLSdkClass type GoJson::Get<type>(); \
22 template GoPxLSdkClass const type GoJson::Get<type>() const; \
23 template GoPxLSdkClass type GoJson::Get<type>(const std::string&); \
24 template GoPxLSdkClass const type GoJson::Get<type>(const std::string&) const; \
25 template GoPxLSdkClass type GoJson::Get<type>(const GoJsonPointer&); \
26 template GoPxLSdkClass const type GoJson::Get<type>(const GoJsonPointer&) const; \
27 template GoPxLSdkClass bool operator==<type>(const GoJson&, const type&); \
28 template GoPxLSdkClass void GoJson::operator=<type>(const type&); \
29 template GoPxLSdkClass void GoJson::Set<type>(const std::string&, const type&); \
30 template GoPxLSdkClass void GoJson::Set<type>(const GoJsonPointer&, const type&); \
31 template GoPxLSdkClass void GoJson::Add<type>(const std::string&, const type&); \
32 template GoPxLSdkClass void GoJson::Replace<type>(const std::string&, const type&);
57 explicit GoJson(std::shared_ptr<nlohmann::json>
json);
76 explicit GoJson(
const std::string& data);
124 T Get(
const std::string& path);
148 const T Get(
const std::string& path)
const;
205 template <
typename T>
206 void Set(
const std::string& path,
const T& val);
216 template <std::
size_t N>
217 void Set(
const std::string& path,
const char(&val)[N])
219 Set(path, std::string(val));
230 template <
typename T>
241 template <std::
size_t N>
244 Set(ptr, std::string(val));
255 void Set(
const std::string& path,
const GoJson& val);
275 void Set(
const std::string& path,
const std::vector<k8u>& val);
285 void Set(
const GoJsonPointer& ptr,
const std::vector<k8u>& val);
298 void Add(
const std::string& path,
const T& val);
311 template <std::
size_t N>
312 void Add(
const std::string& path,
const char(&val)[N])
314 Add(path, std::string(val));
327 void Replace(
const std::string& path,
const T& val);
338 template <std::
size_t N>
339 void Replace(
const std::string& path,
const char(&val)[N])
341 Replace(path, std::string(val));
352 bool HasKey(
const std::string& key)
const;
363 void Copy(
const std::string& source,
const std::string& destination);
374 void Move(
const std::string& source,
const std::string& destination);
384 void Remove(
const std::string& path);
394 void Patch(
const GoJson& obj);
404 void Merge(
const GoJson& obj);
413 const bool Empty()
const;
481 const GoJson At(
int index)
const;
492 GoJson At(
const std::string& path);
503 const GoJson At(
const std::string& path)
const;
545 const size_t Size()
const;
554 const bool IsObject()
const;
563 const bool IsNumber()
const;
572 const bool IsFloat()
const;
581 const bool IsInteger()
const;
590 const bool IsUnsigned()
const;
599 const bool IsBoolean()
const;
608 const bool IsString()
const;
617 const bool IsArray()
const;
626 const bool IsPrimitive()
const;
635 const bool IsBinary()
const;
644 const bool IsDiscarded()
const;
653 const bool IsNull()
const;
662 const bool IsStructured()
const;
672 const bool IsObject(
const std::string& path)
const;
682 const bool IsNumber(
const std::string& path)
const;
692 const bool IsFloat(
const std::string& path)
const;
702 const bool IsInteger(
const std::string& path)
const;
712 const bool IsUnsigned(
const std::string& path)
const;
722 const bool IsBoolean(
const std::string& path)
const;
732 const bool IsString(
const std::string& path)
const;
742 const bool IsArray(
const std::string& path)
const;
752 const bool IsPrimitive(
const std::string& path)
const;
762 const bool IsBinary(
const std::string& path)
const;
772 const bool IsDiscarded(
const std::string& path)
const;
782 const bool IsNull(
const std::string& path)
const;
792 const bool IsStructured(
const std::string& path)
const;
880 const std::string ToString();
889 const std::string ToString()
const;
908 static GoJson ParseString(
const std::string& data);
921 friend bool operator==(
const GoJson& left,
const T& right);
923 template <std::
size_t N>
926 return left == std::string(val);
937 void operator=(
const T& left);
939 template <std::
size_t N>
942 return *
this = std::string(val);
951 const std::shared_ptr<nlohmann::json> GetHandle(
const std::string& path)
const;
957 const std::shared_ptr<nlohmann::json>& GetHandle()
const;
964 std::shared_ptr<nlohmann::json> GetHandle(
const std::string& path);
970 std::shared_ptr<nlohmann::json>& GetHandle();
976 mutable std::shared_ptr<nlohmann::json> jsonHandle;
Simplify working with json data.
Definition: GoJson.h:39
void operator=(const char(&val)[N])
Definition: GoJson.h:940
void Add(const std::string &path, const char(&val)[N])
Adds value if not exists.
Definition: GoJson.h:312
#define GoPxLSdkClass
Definition: Def.h:35
friend std::ostream & operator<<(std::ostream &os, const GoJson &json)
Definition: GoJson.h:929
Represents json iterator.
Definition: GoJsonIterator.h:25
Declares the GoPxLSdk.GoJsonIterator class.
const std::string ToString()
Gets string formatted JSON.
void Set(const std::string &path, const char(&val)[N])
Sets value.
Definition: GoJson.h:217
Definition: GoRequest.h:22
Declares the GoPxLSdk.GoJsonPointer class.
void Set(const GoJsonPointer &ptr, const char(&val)[N])
Sets value.
Definition: GoJson.h:242
void Replace(const std::string &path, const char(&val)[N])
Adds value if not exists.
Definition: GoJson.h:339
Definition: GoGdpMesh.h:45
std::vector< Byte > ByteArray
Definition: Def.h:49
basic_json< std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, double, std::allocator, adl_serializer, std::vector< std::uint8_t >> json
Definition: Def.h:88
friend bool operator==(const GoJson &left, const char(&val)[N])
Definition: GoJson.h:924
Represents json pointer as described in Section 3 of RFC6901.
Definition: GoJsonPointer.h:21