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属性是真的。我在这里不知所措,有什么想法吗?

Custom JsonConverter does not call ReadJson

我想我在Brian的帮助下解决了这个问题,这个问题与上面的代码无关——我认为我正在反序列化的TransformMatrix只是一个只读属性。我使用的解决方案是公开反序列化程序可以写入的另一个属性。