2012-09-27 16 views
1

我正在使用WebApi httpclient構建一個.net api庫以用於REST Web服務。REST api with HttpClient但未知的JSON響應

其餘服務返回JSON。

我遇到的問題是,對於一個請求,我可能會得到不同的JSON格式。

如果查詢成功,我得到一個JSON數組,我已經使用了強大的C#類型來保存它。

使用ReadAsAsync < T>方法將其從內容中提取出來。

如果請求有一個壞的API密鑰或其他錯誤發生,其餘服務返回JSON對象中包含狀態=錯誤和解釋信息等一些性質

我不能再只使用ReadAsAsync < T>方法,因爲我不知道什麼格式回來。我不太瞭解JSON linq庫,但有沒有辦法讓JSON響應放入某個JSON持有者對象,然後檢查它是否存在status = error,然後使用正確的反序列化來強化我的強類型。

我似乎能夠將它存儲在JRaw對象中,但不知道從哪裏去。

非常感謝。

回答

1

如果請求有一個壞的API密鑰或另一錯誤發生,其餘服務返回與像狀態=誤差和解釋消息等

一些性質JSON對象在這種情況下,返回的狀態碼將不會成功。你可以在狀態代碼進行檢查,然後適當地反序列化你的迴應內容:

 if (httpResponseMessage.IsSuccessStatusCode) 
     { 
      // Deserialize your JSON array 
     } 
     else 
     { 
      // Deserialize the error 
     } 
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 
}