using System.Text.Json.Serialization;
public static void Main()
var ip = IPAddress.Parse("192.168.1.2");
var message = new ClientRegistered("Foo", ip);
var jsonserializeroptions = new JsonSerializerOptions() {
Converters = { new IPAddressJsonConverter()},
Console.WriteLine(JsonSerializer.Serialize(message, jsonserializeroptions));
public record ClientRegistered(string Client, IPAddress IPAddress);
public class IPAddressJsonConverter : JsonConverter<IPAddress>
public override IPAddress Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
=> IPAddress.TryParse(reader.GetString(), out var result) ? result : IPAddress.None;
public override void Write(Utf8JsonWriter writer, IPAddress value, JsonSerializerOptions options)
=> writer.WriteStringValue(value.ToString());