using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text.Json.Serialization;
public static void Main()
var options = new JsonSerializerOptions()
var items = new[] { "A", "B", "C" };
var instance = new SomeClass(items);
var json = JsonSerializer.Serialize(instance, options);
var copy = JsonSerializer.Deserialize<SomeClass>(json, options);
public sealed class SomeClass
public SomeClass(IEnumerable<string> myItems)
InternalMyItems = new Collection<string>(myItems.ToArray());
MyItems = new ReadOnlyCollection<string>(InternalMyItems);
public IReadOnlyCollection<string> MyItems { get; }
private Collection<string> InternalMyItems { get; }