using System.Collections.Generic;
using System.Text.Json.Serialization;
public int Id { get; set; }
public object Name { get; set; }
public override string ToString()
return $"Id = {Id}, Name = {Name}, NameType = {Name.GetType().Name}";
public class MyCustomConverter : JsonConverter<Data>
public override Data Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
if (reader.TokenType != JsonTokenType.StartObject)
throw new JsonException();
if (reader.TokenType == JsonTokenType.EndObject)
if (reader.TokenType == JsonTokenType.PropertyName)
string propertyName = reader.GetString();
data.Id = reader.GetInt32();
if (reader.TokenType == JsonTokenType.Number)
data.Name = reader.GetInt32();
else if (reader.TokenType == JsonTokenType.String)
data.Name = reader.GetString();
throw new JsonException();
public override void Write(Utf8JsonWriter writer, Data value, JsonSerializerOptions options)
writer.WriteStringValue(value.ToString());
public static void Main()
string test = "[{\"Id\":86,\"Name\":\"test\"},{\"Id\":87,\"Name\":100}]";
var serializeOptions = new JsonSerializerOptions();
serializeOptions.Converters.Add(new MyCustomConverter());
var data = JsonSerializer.Deserialize<List<Data>>(test, serializeOptions);
foreach (var item in data)