C# 自定义JsonConverter不调用ReadJson
我试图为一个结构实现一个自定义JsonConverter,但是我很难让它正常工作。我以前为另一个类实现了一个自定义转换器,这个类工作得很完美,我想我对这个类也做了同样的事情,但是我的转换器的ReadJson方法从未被调用 这是一节课:C# 自定义JsonConverter不调用ReadJson,c#,json.net,C#,Json.net,我试图为一个结构实现一个自定义JsonConverter,但是我很难让它正常工作。我以前为另一个类实现了一个自定义转换器,这个类工作得很完美,我想我对这个类也做了同样的事情,但是我的转换器的ReadJson方法从未被调用 这是一节课: public class TransformMatrixConverter : JsonConverter { public override bool CanConvert(Type objectType) { return typeof(Tra
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
});
}
公共静态项FromJSON(字符串json)
{
JsonConverter[]converter={new LineConverter(),new TransformMatrixConverter()};
返回JsonConvert.DeserializeObject(json,新的JsonSerializerSettings()
{
转换器=转换器
});
}
发生的情况:调用转换器的CanConvert方法,并在适当时正确返回true;然而,ReadJson方法从未被命中,我在那里有一个断点,并且该异常从未被抛出。我已经验证了转换器的CanRead属性是正确的。我在这里不知所措,有什么想法吗?我想我是在Brian的帮助下解决的,这个问题与上面的代码无关-我以为我正在反序列化的TransformMatrix只是一个只读属性。我使用的解决方案是公开反序列化程序可以写入的另一个属性。您缺少一些关键细节。JSON是什么样子的,
Item
和TransformMatrix
的定义是什么样子的?根据你提供的信息,我无法重现这个问题。带有JSON和类/结构定义的基本程序在TransformMatrixConverter中遇到异常。Fiddle:您是否验证过Json.NET是否确实将typeof(TransformMatrix)
传递给您的CanConvert(type)
?或者您只是验证了1)它被调用,以及2)当使用typeof(TransformMatrix)
手动调用时,它返回true
?@BrianRogers啊,谢谢!你让我检查了我代码的另一部分,它有问题!我想我现在解决了这个问题——我认为我正在反序列化的转换矩阵只是一个只读属性。@ USE1846121,你应该考虑将你的解决方案添加到你的问题的答案中,这样别人就知道问题已经解决了。