diff --git a/AK/JsonValue.h b/AK/JsonValue.h index 0c2a4555af..c0118b6f36 100644 --- a/AK/JsonValue.h +++ b/AK/JsonValue.h @@ -67,6 +67,32 @@ public: return IPv4Address::from_string(as_string()); } + int to_int(int default_value = 0) const + { + if (!is_number()) + return default_value; +#ifndef KERNEL + if (is_double()) + return (int)as_double(); +#endif + if (is_uint()) + return (int)as_uint(); + return as_int(); + } + + unsigned to_uint(unsigned default_value = 0) const + { + if (!is_number()) + return default_value; +#ifndef KERNEL + if (is_double()) + return (unsigned)as_double(); +#endif + if (is_int()) + return (unsigned)as_int(); + return as_uint(); + } + bool to_bool(bool default_value = false) const { if (!is_bool()) @@ -110,6 +136,14 @@ public: return *m_value.as_array; } +#ifndef KERNEL + double as_double() const + { + ASSERT(is_double()); + return m_value.as_double; + } +#endif + Type type() const { return m_type; } bool is_null() const { return m_type == Type::Null; }