gpt4 book ai didi

c# - 自定义 JsonConverter 不调用 ReadJson

转载 作者:行者123 更新时间:2023-11-30 17:40:49 24 4
gpt4 key购买 nike

我正在尝试为结构实现自定义 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 只是一个只读属性。我使用的解决方案是公开反序列化器可以编写的另一个属性。

关于c# - 自定义 JsonConverter 不调用 ReadJson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33830224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com