REST api与HttpClient但未知的JSON响应

时间:2012-09-27 21:13:56

标签: json dotnet-httpclient

我使用WebApi httpclient构建一个.net api库,用于对付REST Web服务。

其余服务返回JSON。

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

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

使用ReadAsAsync< T>将内容从内容中删除的方法。

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

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

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

非常感谢。

2 个答案:

答案 0 :(得分:1)

  

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

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

        if (httpResponseMessage.IsSuccessStatusCode)
        {
           // Deserialize your JSON array
        }
        else
        {
           // Deserialize the error
        }

答案 1 :(得分: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
}