如何在.Net中使用特定于供应商的内容类型对json进行反序列化?

时间:2015-11-03 15:38:53

标签: c# json json-deserialization

返回从API调用返回的json,内容类型设置为

应用/ vnd.company-V1 + JSON

不幸的是,内置的JsonMediaTypeFormatter不理解这种内容类型并导致错误

没有MediaTypeFormatter可用于读取

类型的对象

我已尝试将特殊媒体类型显式添加到JsonMediaTypeFormatter的SupportedMediaTypes集合中。导致同样的错误。

但是,我能够子类JsonMediaTypeFormatter,重写其ReadFromStream方法来反序列化对象

public class MyFormatter : JsonMediaTypeFormatter{
    public MyFormatter():base(){
        SupportedMedaiTypes.Add(new MediaTypeHeaderValue("application/vnd.company-v1+json"));
    }

    public override Task<object> ReadFromStreamAsync(...){
        var taskSource = new TaskCompletionSource<object>();
        try{
            var o = Newtonsoft.Json.JsonConvert.DeserializeObject<MyClass>(reader.ReadToEnd());
            taskSource.SetResult(o);
        }catch(Exception ex){
            taskSource.SetException(ex)
        }
    }
}

以上作品。但我觉得这太过分了,我可能会遗漏一些简单的东西。

这是正确的方式还是有更好的选择?

0 个答案:

没有答案