返回从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)
}
}
}
以上作品。但我觉得这太过分了,我可能会遗漏一些简单的东西。
这是正确的方式还是有更好的选择?