89 JsonValue(
const std::string &value) : type(
type_string), value_string(value), value_number(), value_boolean() { }
102 operator int()
const {
return to_int(); }
126 std::map<std::string, JsonValue> &
get_members() {
return members; }
127 const std::map<std::string, JsonValue> &
get_members()
const {
return members; }
131 const std::vector<JsonValue> &
get_items()
const {
return items; }
177 template<
typename Type>
178 std::map<std::string, Type>
to_map()
const
183 std::map<std::string, Type>
object;
184 std::map<std::string, JsonValue>::const_iterator it;
185 for (it = members.begin(); it != members.end(); ++it)
186 object[it->first] = it->second;
191 template<
typename Type>
197 std::vector<Type> list;
198 list.reserve(items.size());
199 for (
size_t i = 0; i < items.size(); i++)
200 list.push_back(items[i]);
206 void to_json(std::string &result)
const;
212 void write(std::string &json)
const;
213 void write_array(std::string &json)
const;
214 void write_object(std::string &json)
const;
215 static void write_string(
const std::string &str, std::string &json);
216 void write_number(std::string &json)
const;
218 static JsonValue read(
const std::string &json,
size_t &pos);
219 static JsonValue read_object(
const std::string &json,
size_t &pos);
220 static JsonValue read_array(
const std::string &json,
size_t &pos);
221 static std::string read_string(
const std::string &json,
size_t &pos);
222 static JsonValue read_number(
const std::string &json,
size_t &pos);
223 static JsonValue read_boolean(
const std::string &json,
size_t &pos);
224 static void read_whitespace(
const std::string &json,
size_t &pos);
227 std::map<std::string, JsonValue> members;
228 std::vector<JsonValue> items;
229 std::string value_string;
static JsonValue string(const std::string &value)
Create a string value.
Definition: json_value.h:74
static JsonValue number(double value)
Definition: json_value.h:81
JsonException(const std::string &message)
Definition: json_value.h:43
bool to_boolean() const
Convert value object to a boolean.
Definition: json_value.h:164
JsonValue & operator[](const std::string &key)
Definition: json_value.h:106
int to_int() const
Convert value object to an int.
Definition: json_value.h:155
static JsonValue from_json(const std::string &json)
Create a value from UTF-8 JSON string.
std::string message
Description of exception.
Definition: exception.h:59
Definition: json_value.h:54
bool is_boolean() const
Return true if value is a boolean.
Definition: json_value.h:149
JsonValue()
Constructs a value.
Definition: json_value.h:87
JsonValue(double value)
Definition: json_value.h:91
Definition: json_value.h:56
static JsonValue boolean(bool value)
Create a boolean value.
Definition: json_value.h:77
Definition: json_value.h:58
std::string to_json() const
Create an UTF-8 JSON string for the value.
bool is_number() const
Return true if value is a number.
Definition: json_value.h:146
JsonValue(Type type)
Definition: json_value.h:88
Definition: json_value.h:53
const std::vector< JsonValue > & get_items() const
Definition: json_value.h:131
Definition: json_value.h:55
Exception class thrown for JSON exceptions.
Definition: json_value.h:40
Top-level exception class.
Definition: exception.h:43
std::string to_string() const
Convert value object to a string.
Definition: json_value.h:152
JsonValue & operator=(const std::string &value)
Assign a new value.
Definition: json_value.h:171
Class representing a JSON value.
Definition: json_value.h:47
static JsonValue object()
Create a object value.
Definition: json_value.h:65
bool is_object() const
Return true if value is an object.
Definition: json_value.h:137
bool is_null() const
Return true if value is null.
Definition: json_value.h:134
Type get_type() const
Get value type.
Definition: json_value.h:111
bool is_string() const
Return true if value is a string.
Definition: json_value.h:143
JsonValue & operator[](const char *key)
Indexers for object members or array items.
Definition: json_value.h:105
static JsonValue null()
Create a null value.
Definition: json_value.h:71
const JsonValue & operator[](int index) const
Definition: json_value.h:107
Definition: json_value.h:57
bool is_array() const
Return true if value is an array.
Definition: json_value.h:140
std::vector< Type > to_vector() const
Convert value array to a std::vector with the template specified value type.
Definition: json_value.h:192
float to_float() const
Convert value object to a float.
Definition: json_value.h:158
Type
value type
Definition: json_value.h:51
double to_double() const
Convert value object to a double.
Definition: json_value.h:161
JsonValue & operator[](int index)
Definition: json_value.h:108
static JsonValue number(int value)
Create a number value.
Definition: json_value.h:80
JsonValue(bool value)
Definition: json_value.h:92
JsonValue(int value)
Definition: json_value.h:90
size_t get_size() const
Get size of value.
Definition: json_value.h:114
JsonValue(const std::string &value)
Definition: json_value.h:89
const std::map< std::string, JsonValue > & get_members() const
Definition: json_value.h:127
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:178
std::vector< JsonValue > & get_items()
Get array items.
Definition: json_value.h:130
static JsonValue array()
Create a array value.
Definition: json_value.h:68
std::map< std::string, JsonValue > & get_members()
Get object members.
Definition: json_value.h:126