9 #ifndef GO_PXL_SDK_JSON_H
10 #define GO_PXL_SDK_JSON_H
19 #define GoJsonTypeSpec(type) \
20 template GoPxLSdkClass type GoJson::Get<type>(); \
21 template GoPxLSdkClass const type GoJson::Get<type>() const; \
22 template GoPxLSdkClass type GoJson::Get<type>(const std::string&); \
23 template GoPxLSdkClass const type GoJson::Get<type>(const std::string&) const; \
24 template GoPxLSdkClass type GoJson::Get<type>(const GoJsonPointer&); \
25 template GoPxLSdkClass const type GoJson::Get<type>(const GoJsonPointer&) const; \
26 template GoPxLSdkClass bool operator==<type>(const GoJson&, const type&); \
27 template GoPxLSdkClass void GoJson::operator=<type>(const type&); \
28 template GoPxLSdkClass void GoJson::Set<type>(const std::string&, const type&); \
29 template GoPxLSdkClass void GoJson::Set<type>(const GoJsonPointer&, const type&); \
30 template GoPxLSdkClass void GoJson::Add<type>(const std::string&, const type&); \
31 template GoPxLSdkClass void GoJson::Replace<type>(const std::string&, const type&);
56 explicit GoJson(std::shared_ptr<nlohmann::json>
json);
75 explicit GoJson(
const std::string& data);
123 T Get(
const std::string& path);
147 const T Get(
const std::string& path)
const;
204 template <
typename T>
205 void Set(
const std::string& path,
const T& val);
215 template <std::
size_t N>
216 void Set(
const std::string& path,
const char(&val)[N])
218 Set(path, std::string(val));
229 template <
typename T>
240 template <std::
size_t N>
243 Set(ptr, std::string(val));
254 void Set(
const std::string& path,
const GoJson& val);
274 void Set(
const std::string& path,
const std::vector<k8u>& val);
284 void Set(
const GoJsonPointer& ptr,
const std::vector<k8u>& val);
297 void Add(
const std::string& path,
const T& val);
310 template <std::
size_t N>
311 void Add(
const std::string& path,
const char(&val)[N])
313 Add(path, std::string(val));
326 void Replace(
const std::string& path,
const T& val);
337 template <std::
size_t N>
338 void Replace(
const std::string& path,
const char(&val)[N])
340 Replace(path, std::string(val));
351 bool HasKey(
const std::string& key)
const;
362 void Copy(
const std::string& source,
const std::string& destination);
373 void Move(
const std::string& source,
const std::string& destination);
383 void Remove(
const std::string& path);
393 void Patch(
const GoJson& obj);
403 void Merge(
const GoJson& obj);
412 const bool Empty()
const;
480 const GoJson At(
int index)
const;
491 GoJson At(
const std::string& path);
502 const GoJson At(
const std::string& path)
const;
544 const size_t Size()
const;
553 const bool IsObject()
const;
562 const bool IsNumber()
const;
571 const bool IsFloat()
const;
580 const bool IsInteger()
const;
589 const bool IsUnsigned()
const;
598 const bool IsBoolean()
const;
607 const bool IsString()
const;
616 const bool IsArray()
const;
625 const bool IsPrimitive()
const;
634 const bool IsBinary()
const;
643 const bool IsDiscarded()
const;
652 const bool IsNull()
const;
661 const bool IsStructured()
const;
671 const bool IsObject(
const std::string& path)
const;
681 const bool IsNumber(
const std::string& path)
const;
691 const bool IsFloat(
const std::string& path)
const;
701 const bool IsInteger(
const std::string& path)
const;
711 const bool IsUnsigned(
const std::string& path)
const;
721 const bool IsBoolean(
const std::string& path)
const;
731 const bool IsString(
const std::string& path)
const;
741 const bool IsArray(
const std::string& path)
const;
751 const bool IsPrimitive(
const std::string& path)
const;
761 const bool IsBinary(
const std::string& path)
const;
771 const bool IsDiscarded(
const std::string& path)
const;
781 const bool IsNull(
const std::string& path)
const;
791 const bool IsStructured(
const std::string& path)
const;
879 const std::string ToString();
888 const std::string ToString()
const;
907 static GoJson ParseString(
const std::string& data);
920 friend bool operator==(
const GoJson& left,
const T& right);
922 template <std::
size_t N>
925 return left == std::string(val);
936 void operator=(
const T& left);
938 template <std::
size_t N>
941 return *
this = std::string(val);
950 const std::shared_ptr<nlohmann::json> GetHandle(
const std::string& path)
const;
956 const std::shared_ptr<nlohmann::json>& GetHandle()
const;
963 std::shared_ptr<nlohmann::json> GetHandle(
const std::string& path);
969 std::shared_ptr<nlohmann::json>& GetHandle();
975 mutable std::shared_ptr<nlohmann::json> jsonHandle;
Simplify working with json data.
Definition: GoJson.h:38
void operator=(const char(&val)[N])
Definition: GoJson.h:939
void Add(const std::string &path, const char(&val)[N])
Adds value if not exists.
Definition: GoJson.h:311
#define GoPxLSdkClass
Definition: Def.h:35
friend std::ostream & operator<<(std::ostream &os, const GoJson &json)
Definition: GoJson.h:928
Represents json iterator.
Definition: GoJsonIterator.h:24
const std::string ToString()
Gets string formatted JSON.
void Set(const std::string &path, const char(&val)[N])
Sets value.
Definition: GoJson.h:216
Definition: GoRequest.h:21
void Set(const GoJsonPointer &ptr, const char(&val)[N])
Sets value.
Definition: GoJson.h:241
void Replace(const std::string &path, const char(&val)[N])
Adds value if not exists.
Definition: GoJson.h:338
Definition: GoGdpMesh.h:44
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:923
Represents json pointer as described in Section 3 of RFC6901.
Definition: GoJsonPointer.h:20