93 JsonValue(
const char *value) : type(
Type::
string), value_string(value), value_number(), value_boolean() { }
94 JsonValue(
const std::string &value) : type(
Type::
string), value_string(value), value_number(), value_boolean() { }
105 operator int()
const {
return to_int(); }
113 auto it = members.find(key);
114 if (it == members.end())
return undefined;
115 else return it->second;
120 auto it = members.find(key);
121 if (it == members.end())
return undefined;
122 else return it->second;
144 std::map<std::string, JsonValue> &
get_members() {
return members; }
145 const std::map<std::string, JsonValue> &
get_members()
const {
return members; }
149 const std::vector<JsonValue> &
get_items()
const {
return items; }
198 members = value.members;
200 value_string = value.value_string;
201 value_number = value.value_number;
202 value_boolean = value.value_boolean;
207 template<
typename Type>
208 std::map<std::string, Type>
to_map()
const
213 std::map<std::string, Type>
object;
214 std::map<std::string, JsonValue>::const_iterator it;
215 for (it = members.begin(); it != members.end(); ++it)
216 object[it->first] = it->second;
221 template<
typename Type>
227 std::vector<Type> list;
228 list.reserve(items.size());
229 for (
auto & elem : items)
230 list.push_back(elem);
242 void write(std::string &json)
const;
243 void write_array(std::string &json)
const;
244 void write_object(std::string &json)
const;
245 static void write_string(
const std::string &str, std::string &json);
246 void write_number(std::string &json)
const;
248 static JsonValue read(
const std::string &json,
size_t &pos);
249 static JsonValue read_object(
const std::string &json,
size_t &pos);
250 static JsonValue read_array(
const std::string &json,
size_t &pos);
251 static std::string read_string(
const std::string &json,
size_t &pos);
252 static JsonValue read_number(
const std::string &json,
size_t &pos);
253 static JsonValue read_boolean(
const std::string &json,
size_t &pos);
254 static void read_whitespace(
const std::string &json,
size_t &pos);
257 std::map<std::string, JsonValue> members;
258 std::vector<JsonValue> items;
259 std::string value_string;
std::map< std::string, JsonValue > & get_members()
Get object members.
Definition: json_value.h:144
JsonValue & operator[](const std::string &key)
Definition: json_value.h:109
int to_int() const
Convert value object to an int.
Definition: json_value.h:176
bool is_number() const
Return true if value is a number.
Definition: json_value.h:167
const std::vector< JsonValue > & get_items() const
Definition: json_value.h:149
bool is_array() const
Return true if value is an array.
Definition: json_value.h:161
JsonValue(int value)
Definition: json_value.h:91
bool is_object() const
Return true if value is an object.
Definition: json_value.h:158
std::string message
Description of exception.
Definition: exception.h:58
bool is_undefined() const
Return true if value is undefined.
Definition: json_value.h:152
static JsonValue string(const std::string &value)
Create a string value.
Definition: json_value.h:75
static JsonValue number(double value)
Definition: json_value.h:82
JsonValue(Type type)
Definition: json_value.h:89
std::string to_json() const
Create an UTF-8 JSON string for the value.
Exception class thrown for JSON exceptions.
Definition: json_value.h:41
JsonValue()
Constructs a value.
Definition: json_value.h:88
JsonValue & operator=(const T &value)
Assign a new value.
Definition: json_value.h:193
JsonValue(double value)
Definition: json_value.h:92
bool is_null() const
Return true if value is null.
Definition: json_value.h:155
const std::map< std::string, JsonValue > & get_members() const
Definition: json_value.h:145
static JsonValue boolean(bool value)
Create a boolean value.
Definition: json_value.h:78
Class representing a JSON value.
Definition: json_value.h:48
float to_float() const
Convert value object to a float.
Definition: json_value.h:179
size_t get_size() const
Get size of value.
Definition: json_value.h:132
std::string to_string() const
Convert value object to a string.
Definition: json_value.h:173
void to_json(std::string &result) const
bool to_boolean() const
Convert value object to a boolean.
Definition: json_value.h:185
static JsonValue object()
Create a object value.
Definition: json_value.h:66
JsonException(const std::string &message)
Definition: json_value.h:43
const JsonValue & operator[](int index) const
Definition: json_value.h:125
const JsonValue & operator[](const std::string &key) const
Definition: json_value.h:117
JsonValue & operator[](const char *key)
Indexers for object members or array items.
Definition: json_value.h:108
double to_double() const
Convert value object to a double.
Definition: json_value.h:182
Type get_type() const
Get value type.
Definition: json_value.h:129
Top-level exception class.
Definition: exception.h:43
const JsonValue & operator[](const char *key) const
Definition: json_value.h:110
bool is_string() const
Return true if value is a string.
Definition: json_value.h:164
bool is_boolean() const
Return true if value is a boolean.
Definition: json_value.h:170
JsonValue & operator[](int index)
Definition: json_value.h:126
JsonValue(bool value)
Definition: json_value.h:90
Type
value type
Definition: json_value.h:52
std::vector< JsonValue > & get_items()
Get array items.
Definition: json_value.h:148
static JsonValue array()
Create a array value.
Definition: json_value.h:69
std::vector< Type > to_vector() const
Convert value array to a std::vector with the template specified value type.
Definition: json_value.h:222
JsonValue(const char *value)
Definition: json_value.h:93
JsonValue(const std::string &value)
Definition: json_value.h:94
static JsonValue from_json(const std::string &json)
Create a value from UTF-8 JSON string.
std::map< std::string, Type > to_map() const
Convert value object to a std::map with the template specified value type.
Definition: json_value.h:208
static JsonValue number(int value)
Create a number value.
Definition: json_value.h:81