我有一个用JsonConverter属性装饰的类来使用我的自定义转换器.自定义转换器的目的是CustomProperty使用一些自定义逻辑进行序列化.我没有编写代码来序列化所有原始属性,而是决定使用JObject.FromObject自动序列化属性,稍后会做类似的事情o.Remove("CustomProperty")然后添加自定义序列化成员o.
但是因为类是用JsonConverter属性装饰的,所以JObject.FromObject再次调用my ClassAJsonConverter会导致infinte递归调用.在调用时JObject.FromObject,可以专门告诉json使用它的默认转换器而不是我的自定义转换器.
[Newtonsoft.Json.JsonConverter(typeof(ClassAJsonConverter))]
public class ClassA
{
public string A {get; set;}
public int B {get; set;}
.
//20 some properties
.
public CustomProp CustomProperty {get; set;}
}
public class ClassAJsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(ClassA);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
.
var o = JObject.FromObject(value); //Here infinite recurrence occur …Run Code Online (Sandbox Code Playgroud)