1

我正在使用 WebApi httpclient 构建一个 .net api 库以用于 REST Web 服务。

其余服务返回 JSON。

我遇到的问题是,对于一个请求,我可能会得到不同的 JSON 格式。

如果查询成功,我会返回一个 JSON 数组,我已经创建了一个强大的 c# 类型来保存它。

使用 ReadAsAsync<T> 方法将其从内容中取出。

如果请求中有错误的 api 键或发生其他错误,则其余服务会返回一个 JSON 对象,其中包含一些属性,例如 status=error 和解释消息等。

然后我不能只使用 ReadAsAsync< T > 方法,因为我不知道返回的是什么格式。我对 JSON linq 库了解不多,但有没有办法可以将 JSON 响应放入某个 JSON 持有者对象中,然后检查其中是否存在 status=error,然后对我的强类型使用正确的反序列化。

我似乎能够将它存储在 JRaw 对象中,但不知道从这里去哪里。

非常感谢。

4

2 回答 2

1

如果请求中有错误的 api 键或发生其他错误,则其余服务会返回一个 JSON 对象,其中包含一些属性,例如 status=error 和解释消息等。

在这种情况下,返回的状态码不会成功。您可以检查状态代码,然后适当地反序列化您的响应内容:

        if (httpResponseMessage.IsSuccessStatusCode)
        {
           // Deserialize your JSON array
        }
        else
        {
           // Deserialize the error
        }
于 2012-10-04T06:06:13.183 回答
0

在这种情况下,您可以使用错误处理

try
{
      //Deserialize your JSON Array..this will throw an exception in case of type mismatch
}
catch(Exception e)
{
     //Deserialize your JSON object which will give you Error code or message
}
于 2012-10-04T07:05:36.113 回答