public static void Main()
var rectangle = new Rectangle(1, 2, 3, 4);
var newtonSoftjsonSerialized = JsonConvert.SerializeObject(rectangle);
Console.WriteLine(newtonSoftjsonSerialized);
var jsonOptions = new JsonSerializerOptions
new RectangleJsonConverter()
var jsonSerialized = System.Text.Json.JsonSerializer.Serialize(rectangle, jsonOptions);
Console.WriteLine(jsonSerialized);
var fromNewtonsoftSerializedToObjectUsingJson = System.Text.Json.JsonSerializer.Deserialize<Rectangle>(newtonSoftjsonSerialized, jsonOptions);
Console.WriteLine(fromNewtonsoftSerializedToObjectUsingJson.X);
Console.WriteLine(fromNewtonsoftSerializedToObjectUsingJson.Y);
Console.WriteLine(fromNewtonsoftSerializedToObjectUsingJson.Width);
Console.WriteLine(fromNewtonsoftSerializedToObjectUsingJson.Height);
public class RectangleJsonConverter : System.Text.Json.Serialization.JsonConverter<Rectangle>
public override Rectangle Read(
ref Utf8JsonReader reader,
JsonSerializerOptions options) {
var parts = reader.GetString().Split(new string[] { ", " }, StringSplitOptions.None);
return new Rectangle(int.Parse(parts[0]), int.Parse(parts[1]), int.Parse(parts[2]), int.Parse(parts[3]));
public override void Write(
JsonSerializerOptions options) {
writer.WriteStringValue(rectangle.X + ", " + rectangle.Y + ", " + rectangle.Width + ", " + rectangle.Height);