AWS SDK for C++  1.8.73
AWS SDK for C++
JsonSerializer.h
Go to the documentation of this file.
1 
6 #pragma once
7 
9 
10 #include <aws/core/utils/Array.h>
15 
16 #include <utility>
17 
18 namespace Aws
19 {
20  namespace Utils
21  {
22  namespace Json
23  {
24  class JsonView;
30  {
31  public:
35  JsonValue();
36 
40  JsonValue(const Aws::String& value);
41 
45  JsonValue(Aws::IStream& istream);
46 
51  JsonValue(const JsonValue& value);
52 
57  JsonValue(JsonValue&& value);
58 
59  ~JsonValue();
60 
64  JsonValue& operator=(const JsonValue& other);
65 
73  JsonValue& operator=(JsonValue&& other);
74 
75  bool operator==(const JsonValue& other) const;
76  bool operator!=(const JsonValue& other) const;
77 
81  JsonValue& WithString(const Aws::String& key, const Aws::String& value);
82  JsonValue& WithString(const char* key, const Aws::String& value);
83 
87  JsonValue& AsString(const Aws::String& value);
88 
92  JsonValue& WithBool(const Aws::String& key, bool value);
93  JsonValue& WithBool(const char* key, bool value);
94 
98  JsonValue& AsBool(bool value);
99 
103  JsonValue& WithInteger(const Aws::String& key, int value);
104  JsonValue& WithInteger(const char* key, int value);
105 
109  JsonValue& AsInteger(int value);
110 
114  JsonValue& WithInt64(const Aws::String& key, long long value);
115  JsonValue& WithInt64(const char* key, long long value);
116 
120  JsonValue& AsInt64(long long value);
121 
125  JsonValue& WithDouble(const Aws::String& key, double value);
126  JsonValue& WithDouble(const char* key, double value);
127 
131  JsonValue& AsDouble(double value);
132 
136  JsonValue& WithArray(const Aws::String& key, const Array<Aws::String>& array);
137  JsonValue& WithArray(const char* key, const Array<Aws::String>& array);
138 
143  JsonValue& WithArray(const Aws::String& key, const Array<JsonValue>& array);
144 
149  JsonValue& WithArray(const Aws::String& key, Array<JsonValue>&& array);
150 
154  JsonValue& AsArray(const Array<JsonValue>& array);
155 
159  JsonValue& AsArray(Array<JsonValue>&& array);
160 
165  JsonValue& WithObject(const Aws::String& key, const JsonValue& value);
166  JsonValue& WithObject(const char* key, const JsonValue& value);
167 
171  JsonValue& WithObject(const Aws::String& key, JsonValue&& value);
172  JsonValue& WithObject(const char* key, JsonValue&& value);
173 
177  JsonValue& AsObject(const JsonValue& value);
178 
182  JsonValue& AsObject(JsonValue&& value);
183 
188  inline bool WasParseSuccessful() const
189  {
190  return m_wasParseSuccessful;
191  }
192 
196  inline const Aws::String& GetErrorMessage() const
197  {
198  return m_errorMessage;
199  }
200 
204  JsonView View() const;
205 
206  private:
207  void Destroy();
208  JsonValue(cJSON* value);
209  cJSON* m_value;
210  bool m_wasParseSuccessful;
211  Aws::String m_errorMessage;
212  friend class JsonView;
213  };
214 
222  {
223  public:
224  /* constructors */
225  JsonView();
226  JsonView(const JsonValue& v);
227  JsonView& operator=(const JsonValue& v);
228 
232  Aws::String GetString(const Aws::String& key) const;
233 
238  Aws::String AsString() const;
239 
243  bool GetBool(const Aws::String& key) const;
244 
248  bool AsBool() const;
249 
254  int GetInteger(const Aws::String& key) const;
255 
259  int AsInteger() const;
260 
265  int64_t GetInt64(const Aws::String& key) const;
266 
270  int64_t AsInt64() const;
271 
275  double GetDouble(const Aws::String& key) const;
276 
280  double AsDouble() const;
281 
285  Array<JsonView> GetArray(const Aws::String& key) const;
286 
290  Array<JsonView> AsArray() const;
291 
295  JsonView GetObject(const Aws::String& key) const;
296 
300  JsonView AsObject() const;
301 
306  Aws::Map<Aws::String, JsonView> GetAllObjects() const;
307 
312  bool ValueExists(const Aws::String& key) const;
313 
317  bool KeyExists(const Aws::String& key) const;
318 
322  bool IsObject() const;
323 
327  bool IsBool() const;
328 
332  bool IsString() const;
333 
338  bool IsIntegerType() const;
339 
343  bool IsFloatingPointType() const;
344 
348  bool IsListType() const;
349 
353  bool IsNull() const;
354 
359  Aws::String WriteCompact(bool treatAsObject = true) const;
360 
365  Aws::String WriteReadable(bool treatAsObject = true) const;
366 
370  JsonValue Materialize() const;
371 
372  private:
373  JsonView(cJSON* val);
374  JsonView& operator=(cJSON* val);
375  cJSON* m_value;
376  };
377 
378  } // namespace Json
379  } // namespace Utils
380 } // namespace Aws
381 
std::map< K, V, std::less< K >, Aws::Allocator< std::pair< const K, V > > > Map
Definition: AWSMap.h:19
std::basic_istream< char, std::char_traits< char > > IStream
Definition: AWSStreamFwd.h:20
const Aws::String & GetErrorMessage() const
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String
Definition: AWSString.h:97
Definition: cJSON.h:53
#define AWS_CORE_API
Definition: Core_EXPORTS.h:25