相关疑难解决方法(0)

如何调用 JsonConvert.DeserializeObject 并通过 [JsonConverter] 禁用应用于基本类型的 JsonConverter?

编辑:澄清问题:

我已经重写了基类型的 JsonConverter (通过应用于[JsonConverter(typeof(TConverter))]超类),但是当直接反序列化子类型时,我想使用 STANDARD 序列化(即没有自定义转换器)来反序列化我的派生对象。如何指定在反序列化方法中使用的标准序列化,就好像我没有覆盖 JsonConverter 一样?

我正在使用弹性搜索,无法使用 JsonConverter 的自定义实现调用 JsonConvert.DeserializeObject,并且必须依赖 Elastic 的属性来使用我的转换器。

但是,使用此转换器作为属性似乎也会影响所有子类,但我只是希望它们使用标准转换器,这样我就不必为每个实现都实现 JsonConverter 。

这是我希望它看起来的类/逻辑:

    [Route("test")]
    [HttpPost]
    public HttpResponseMessage Test([FromBody] JToken json)
    {
        var res = json.ToObject<Product>(); // I want an object of ProductImpl type here
        return Request.CreateResponse(res); 
    }

    [JsonConverter(typeof(JsonProductConverted))]
    public abstract class Product
    {
    }

    public class ProductImpl : Product
    {
    }

    public class JsonProductConverted : JsonConverter
    {
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            throw new NotImplementedException();
        }

        public override …
Run Code Online (Sandbox Code Playgroud)

.net c# json json.net

2
推荐指数
1
解决办法
3619
查看次数

标签 统计

.net ×1

c# ×1

json ×1

json.net ×1