I recently spent a lot of time upgrading my old asp.net 4.6 project to .Net 6.
I have almost everything working, but I am having trouble using System.Text.Json in place of Newtonsoft.
In my Startup.cs I ham trying to use a Custom Converter like this:
services.AddMvc()
    .AddJsonOptions(opts => {
        //custom converter for PlayerItemDto
        opts.JsonSerializerOptions.Converters.Add(new PlayerItemConverter());
    });
    
    
Here is where I am trying to do the conversion.  This is all Newtonsoft now, and I am not sure if this will work in System.Text.Json.
Specifically, I can't find anything in System.Text.Json that replaces var obj = JObject.Load(reader); and options.Populate(obj.CreateReader(), retval)
Does anyone know if it's possible?
Here is my converter class:
public class PlayerItemConverter : CustomCreationConverter<PlayerItemDto>
{
    public PlayerItemDto Create(String morality)
    {
        switch (morality) {
            case "bad":
                return new MonsterTypeDto();
            case "good":
                return new LeaderTypeDto();
        }
    }
    public override Object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        var obj = JObject.Load(reader);
        var morality = (String) obj.Property("morality");
        var retval = Create(morality);
        serializer.Populate(obj.CreateReader(), retval);
        return retval;
    }
}
 
    