Custom JsonConverter does not call ReadJson
本文关键字:call ReadJson not does JsonConverter Custom | 更新日期: 2023-09-27 18:22:50
我正试图为结构实现一个自定义JsonConverter,但我很难让它工作。我之前为另一个类实现了一个自定义转换器,这个转换器工作得很完美,我以为我为这个类做了同样的事情,但我的转换器的ReadJson方法从未被调用。
这是类:
public class TransformMatrixConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return typeof(TransformMatrix).IsAssignableFrom(objectType);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanWrite
{
get { return false; }
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
下面是我如何在Item类中使用它。你可以看到我的另一个转换器,它工作得很好。
public static Item FromJSON(string json)
{
JsonConverter[] converters = { new LineConverter(), new TransformMatrixConverter() };
return JsonConvert.DeserializeObject<Item>(json, new JsonSerializerSettings()
{
Converters = converters
});
}
发生了什么:我的转换器的CanConvert方法被调用,并在适当的时候正确地返回true;然而,ReadJson方法从未被命中,我在那里有一个断点,而且该异常也从未被抛出。我已经验证了转换器的CanRead属性是真的。我在这里不知所措,有什么想法吗?
我想我在Brian的帮助下解决了这个问题,这个问题与上面的代码无关——我认为我正在反序列化的TransformMatrix只是一个只读属性。我使用的解决方案是公开反序列化程序可以写入的另一个属性。