1

WebApi httpclient を使用して、REST Web サービスに対して使用する .net API ライブラリを構築しています。

REST サービスは JSON を返します。

私が抱えている問題は、1 つの要求に対して、異なる JSON 形式が返される可能性があることです。

クエリが成功した場合、それを保持するために強力な c# 型を作成した JSON 配列が返されます。

ReadAsAsync< T > メソッドを使用してコンテンツから取得します。

リクエストに不正な API キーが含まれていた場合、または別のエラーが発生した場合、残りのサービスは status=error などのいくつかのプロパティと説明メッセージなどを含む JSON オブジェクトを返します。

どのフォーマットが戻ってくるのかわからないので、ReadAsAsync< T > メソッドを使用することはできません。JSON linq ライブラリについてはよくわかりませんが、JSON 応答を JSON ホルダー オブジェクトに入れ、そこに status=error があるかどうかを確認し、正しい逆シリアル化を使用して強力な型にする方法はありますか。

JRawオブジェクトに保存できるようですが、ここからどこに行くべきかわかりません。

どうもありがとう。

4

2 に答える 2

1

リクエストに不正な API キーが含まれていた場合、または別のエラーが発生した場合、残りのサービスは status=error などのいくつかのプロパティと説明メッセージなどを含む JSON オブジェクトを返します。

この場合、返されるステータス コードは成功しません。ステータス コードを確認してから、レスポンス コンテンツを適切に逆シリアル化できます。

        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 に答える