处理反序列化错误 json

Treating error on deserializing json

我的问题基本上是这样的: 我有一个 API 的输出,returns 一个 json 带有一个名为 "error" 的元素,带有任何消息。当我尝试反序列化我的对象时,服务器 returns 给我一个错误,我得到这个 json 而不是我的 json 对象(产品,订单...)。

这是发生错误的代码:

try
{
    using (var response = (HttpWebResponse)requisicao.GetResponse()) // **here happens the exception**
    {
        using (var stream = new StreamReader(response.GetResponseStream()))
            retorno = JsonConvert.DeserializeObject<TModelo>(stream.ReadToEnd());
    }
}

所以...我想收到此消息错误,但我无法处理(反序列化)它,因为它给我带来了异常。 如果我可以反序列化对象,我可能会收到错误消息,因为代表我的对象的实体继承了错误对象(下面这个)

public class Erro
{
    [JsonProperty("error")]
    string MensagemErro { get; set; }
}

提前致谢。

如果您在获取响应时遇到错误;

(HttpWebResponse)requisicao.GetResponse()

这意味着服务器没有return向您发送正确的消息。因此,没有要反序列化的响应消息,唯一的选择是处理 catch 块中的错误。

看起来像;

try
{
    using (var response = (HttpWebResponse)requisicao.GetResponse()) // **here happens the exception**
    {
        using (var stream = new StreamReader(response.GetResponseStream()))
            retorno = JsonConvert.DeserializeObject<TModelo>(stream.ReadToEnd());
    }
}
catch (WebException e)
{
    WebResponse response = e.Response;
    using (StreamReader reader =
        new StreamReader(response.GetResponseStream()))
    {
        string text = reader.ReadToEnd();//Content of error message
    }
}