You.i Engine
YiRapidJSONUtility.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_RAPID_JSON_UTILITY_H_
3 #define _YI_RAPID_JSON_UTILITY_H_
4 
6 #include "utility/YiString.h"
7 
8 #include <rapidjson/document.h>
9 
15 class CYIDateTime;
16 class CYIParsingError;
17 
22 {
23 
24 public:
25  virtual ~CYIRapidJSONUtility();
26 
35  static std::unique_ptr<yi::rapidjson::Document> CreateDocumentFromString(const CYIString &rJsonString, CYIParsingError &rParsingError);
36 
43  static std::unique_ptr<yi::rapidjson::Document> CreateDocumentFromFile(const CYIString &rFilePath, CYIParsingError &rParsingError);
44 
48  static CYIString CreateStringFromDocument(const yi::rapidjson::Document &rDocument);
49 
58  static bool GetBooleanField(const yi::rapidjson::Value *pValue, const char *pFieldName, bool *pFieldData, CYIParsingError &rParsingError);
59 
67  static bool GetIntegerField(const yi::rapidjson::Value *pValue, const char *pFieldName, int32_t *pFieldData, CYIParsingError &rParsingError);
68 
76  static bool GetLongField(const yi::rapidjson::Value *pValue, const char *pFieldName, int64_t *pFieldData, CYIParsingError &rParsingError);
77 
85  static bool GetUnsignedLongField(const yi::rapidjson::Value *pValue, const char *pFieldName, uint64_t *pFieldData, CYIParsingError &rParsingError);
86 
93  static bool GetStringField(const yi::rapidjson::Value *pValue, const char *pFieldName, CYIString &rFieldData, CYIParsingError &rParsingError);
94 
102  static bool GetFloatField(const yi::rapidjson::Value *pValue, const char *pFieldName, float *pFieldData, CYIParsingError &rParsingError);
103 
112  static bool GetDateField(const yi::rapidjson::Value *pValue, const char *pFieldName, CYIDateTime &rFieldData, CYIParsingError &rParsingError);
113 
117  static bool IsNullField(const yi::rapidjson::Value *pValue, const char *pFieldName, bool *pbFieldIsNull, CYIParsingError &rParsingError);
118 
122  static bool AddBooleanField(yi::rapidjson::Document *pDocument, const CYIString &rFieldName, bool bValue);
123 
127  static bool AddIntegerField(yi::rapidjson::Document *pDocument, const CYIString &rFieldName, int32_t nValue);
128 
132  static bool AddLongField(yi::rapidjson::Document *pDocument, const CYIString &rFieldName, int64_t nValue);
133 
137  static bool AddUnsignedLongField(yi::rapidjson::Document *pDocument, const CYIString &rField, uint64_t uValue);
138 
142  static bool AddFloatField(yi::rapidjson::Document *pDocument, const CYIString &rFieldName, float fValue);
143 
147  static bool AddObjectField(yi::rapidjson::Document *pDocument, const CYIString &rFieldName, yi::rapidjson::Value &rValue);
148 
152  static bool AddStringField(yi::rapidjson::Document *pDocument, const CYIString &rFieldName, const CYIString &rValue);
153 
154 private:
156 
157 };
158 
163 #endif /* _YI_RAPID_JSON_UTILITY_H_ */
static bool AddIntegerField(yi::rapidjson::Document *pDocument, const CYIString &rFieldName, int32_t nValue)
static bool AddStringField(yi::rapidjson::Document *pDocument, const CYIString &rFieldName, const CYIString &rValue)
static bool GetBooleanField(const yi::rapidjson::Value *pValue, const char *pFieldName, bool *pFieldData, CYIParsingError &rParsingError)
static bool AddBooleanField(yi::rapidjson::Document *pDocument, const CYIString &rFieldName, bool bValue)
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
static bool GetUnsignedLongField(const yi::rapidjson::Value *pValue, const char *pFieldName, uint64_t *pFieldData, CYIParsingError &rParsingError)
static bool GetStringField(const yi::rapidjson::Value *pValue, const char *pFieldName, CYIString &rFieldData, CYIParsingError &rParsingError)
static std::unique_ptr< yi::rapidjson::Document > CreateDocumentFromString(const CYIString &rJsonString, CYIParsingError &rParsingError)
static std::unique_ptr< yi::rapidjson::Document > CreateDocumentFromFile(const CYIString &rFilePath, CYIParsingError &rParsingError)
static bool GetLongField(const yi::rapidjson::Value *pValue, const char *pFieldName, int64_t *pFieldData, CYIParsingError &rParsingError)
static bool AddUnsignedLongField(yi::rapidjson::Document *pDocument, const CYIString &rField, uint64_t uValue)
static CYIString CreateStringFromDocument(const yi::rapidjson::Document &rDocument)
A class to store errors in the parsing of encoded data, such as JSON or XML.
Definition: YiParsingError.h:15
static bool IsNullField(const yi::rapidjson::Value *pValue, const char *pFieldName, bool *pbFieldIsNull, CYIParsingError &rParsingError)
static bool GetIntegerField(const yi::rapidjson::Value *pValue, const char *pFieldName, int32_t *pFieldData, CYIParsingError &rParsingError)
static bool AddObjectField(yi::rapidjson::Document *pDocument, const CYIString &rFieldName, yi::rapidjson::Value &rValue)
static bool AddFloatField(yi::rapidjson::Document *pDocument, const CYIString &rFieldName, float fValue)
static bool GetDateField(const yi::rapidjson::Value *pValue, const char *pFieldName, CYIDateTime &rFieldData, CYIParsingError &rParsingError)
Utility class that requires a string as per the following format: http://en.wikipedia.org/wiki/ISO_8601 to construct an instance and provides some commmonly used parts like year, month, hour etc. in different data types and formats. All dates are in the local timezone unless otherwise specified.
Definition: YiDateTime.h:17
virtual ~CYIRapidJSONUtility()
static bool GetFloatField(const yi::rapidjson::Value *pValue, const char *pFieldName, float *pFieldData, CYIParsingError &rParsingError)
A front-end utility class aimed to simplify the use of RapidJSON tools.
Definition: YiRapidJSONUtility.h:21
static bool AddLongField(yi::rapidjson::Document *pDocument, const CYIString &rFieldName, int64_t nValue)