处理反序列化错误 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
}
}
我的问题基本上是这样的: 我有一个 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
}
}