public static void Main()
var json = JsonConvert.SerializeObject(new TestClass {YourValue = new[]{5,4}});
var obj = JsonConvert.DeserializeObject<TestClass>(json);
obj.YourValue.ToArray().Dump();
[JsonConverter(typeof(MemoryConverter<int>))]
public Memory<int> YourValue { get; set; }
public class MemoryConverter<T> : JsonConverter
public override bool CanConvert(Type objectType) =>
typeof(Memory<T>).IsAssignableFrom(objectType);
public override bool CanRead => true;
public override bool CanWrite => true;
public override object ReadJson(JsonReader reader,
JsonSerializer serializer)
return new Memory<T>(serializer.Deserialize<T[]>(reader));
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
if (!(value is Memory<T> mem))
throw new ArgumentException($"invalid type {value?.GetType().FullName}");
writer.WriteStartArray();
foreach (var item in span)
serializer.Serialize(writer, item);