using System.Text.Json.Serialization;
public static void Main()
string jsonOne = @"{ ""values"": ""abc"" }";
TestClass jsonObjOne = JsonSerializer.Deserialize<TestClass>(jsonOne);
Console.WriteLine(JsonSerializer.Serialize(jsonObjOne.StringValue));
Console.WriteLine("---");
string jsonTwo = @"{ ""values"": [1,2,3] }";
TestClass jsonObjTwo = JsonSerializer.Deserialize<TestClass>(jsonTwo);
Console.WriteLine(JsonSerializer.Serialize(jsonObjTwo.IntegerValues));
public class TestClassConverter : JsonConverter<TestClass>
public override TestClass Read(
ref Utf8JsonReader reader,
JsonSerializerOptions options)
TestClass value = new TestClass();
JsonElement root = JsonElement.ParseValue(ref reader);
JsonElement values = root.GetProperty("values");
switch (values.ValueKind)
case JsonValueKind.String:
value.StringValue = values.ToString();
case JsonValueKind.Array:
value.IntegerValues = JsonSerializer.Deserialize<int[]>(values);
throw new JsonException("Unsupported values type");
public override void Write(
JsonSerializerOptions options) =>
throw new NotImplementedException();
[JsonConverter(typeof(TestClassConverter))]
[JsonPropertyName("values")]
public JsonElement? values { get; set; } = null;
public string StringValue { get; set; }
public int[] IntegerValues { get; set; }