using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Collections.Immutable; public class CustomArrayConverter : JsonConverter> { public override ImmutableArray ReadJson(JsonReader reader, Type objectType, ImmutableArray existingValue, bool hasExistingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return default(ImmutableArray); } JArray array = JArray.Load(reader); ImmutableArray.Builder builder = ImmutableArray.CreateBuilder(); for (int i = 0; i < array.Count; i++) { builder.Add((T)array[i].ToObject(typeof(T))!); } return builder.ToImmutable(); } public override void WriteJson(JsonWriter writer, ImmutableArray value, JsonSerializer serializer) { if (value.IsDefault) { writer.WriteNull(); } else { writer.WriteStartArray(); foreach (var item in value) { serializer.Serialize(writer, item); } writer.WriteEndArray(); } } }