How to create converters for IPAddress?
On this page, we’ll see how we can create a custom converter so you can directly insert or retrieve instances of IPAddress
like so:
// Insert into a JsonDocument
doc["ip"] = IPAddress(192, 168, 0, 1);
// Retrieve from a JsonDocument
IPAddress ip = doc["ip"];
In this scenario, the JSON document looks like this:
{"ip":"192.168.0.1"}
Converting IPAddress
to JSON
Inserting an IPAddress
into a JsonDocument
works out-of-the-box because IPAddress
implements the Printable
interface (and ArduinoJson has supported this interface since version 6.18.0).
Therefore, you don’t need to write any code.
Converting JSON to IPAddress
You must declare the following function:
void convertFromJson(JsonVariantConst src, IPAddress& dst) {
dst.fromString(src.as<const char*>());
}
As you can see, this function calls IPAddress.fromString()
to parse the string "192.168.0.1"
.
convertFromJson()
must have this exact signature.
Don’t change its name or parameter types; otherwise, ArduinoJson won’t find it.