I have a .NET Core 3.1 controller derived from Microsoft.AspNetCore.Mvc.ControllerBase
, the custom json converter is not called on result output.
IProduct
public interface IProduct { ... }
Controller:
[HttpGet("{id}")]
public IProduct Get(string id)
{
IProduct product = _data.GetProduct(id);
return product;
}
[HttpPut]
public Task Save(IProduct product)
{
return _data.Save(product);
}
JsonConverter:
public class ProductConverter : System.Text.Json.Serialization.JsonConverter<IProduct>
{
public override IProduct Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
// this code works from unit tests, trust me :)
}
public override void Write(Utf8JsonWriter writer, IProduct value, JsonSerializerOptions options)
{
// this code works from unit tests, trust me :)
}
}
Startup:
services
.AddControllers()
.AddJsonOptions(options => {
options.JsonSerializerOptions.Converters.Add(new ProductConverter());
});
Symptoms
- When controller's action method
Save
is called, theProductConverter.Read
is called - When controller's action method
Get
is called, theProductConverter.Write
method is not called - I get json result of actual implementation of
IProduct
Am I missing something or doing something wrong?