我使用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对象中,但不知道从哪里开始。
非常感谢。
答案 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
}