AK: Make it easy to convert between JsonValue and IPv4Address.

They still use string storage, but this change makes it nice and easy to
work with IPv4 addresses in JSON data.
This commit is contained in:
Andreas Kling 2019-07-08 13:03:23 +02:00
parent d8f1a7e046
commit 7bb1e465c6
2 changed files with 15 additions and 0 deletions

View file

@ -110,6 +110,11 @@ JsonValue::JsonValue(const String& value)
}
}
JsonValue::JsonValue(const IPv4Address& value)
: JsonValue(value.to_string())
{
}
JsonValue::JsonValue(const JsonObject& value)
: m_type(Type::Object)
{

View file

@ -1,6 +1,8 @@
#pragma once
#include <AK/AKString.h>
#include <AK/IPv4Address.h>
#include <AK/Optional.h>
namespace AK {
@ -44,6 +46,7 @@ public:
JsonValue(bool);
JsonValue(const char*);
JsonValue(const String&);
JsonValue(const IPv4Address&);
JsonValue(const JsonArray&);
JsonValue(const JsonObject&);
@ -57,6 +60,13 @@ public:
return default_value;
}
Optional<IPv4Address> to_ipv4_address() const
{
if (!is_string())
return {};
return IPv4Address::from_string(as_string());
}
int as_int() const
{
ASSERT(is_int());