I have the following simplest ever model class
[JsonConverter(typeof(School))]
public class School
{
public Guid SchoolId { get; set; }
}
I have the following converter that I am using in my MVC application
public class ResponseConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return typeof(School) == objectType;
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var serializer2 = JsonSerializer.Create();
serializer2.Serialize(writer, value); // This call causes WriteJson to be called recursively
}
public override bool CanWrite
{
get
{
return true;
}
}
public override bool CanRead
{
get
{
return false;
}
}
}
I got an error that I have circular reference loop. When I set my application to ignore circular reference I end up getting empty string being serialized and returned in my response. When I set it to "Serialize" then I get thrown into this infinite recursive call loop.
Where is the circular reference in my model class? How do I fix this problem?
Here is my Startup.cs
adding Json settings
services.AddMvc()
.AddJsonOptions
(options =>
{
options.SerializerSettings.Converters.Insert(0, new RequestConverter());
options.SerializerSettings.Converters.Insert(0, new ResponseConverter());
});