RestSharp を使用していますが、Json を逆シリアル化するときに問題が発生します。
成功した場合、次のような Json を受け取ります (データはテーブルです)。
{"status": "OK", "data": "[...]"}
エラーが発生した場合は、次のような Json を受け取ります (データは文字列です)。
{"status": "ERROR", "data": "..."}
Json をテーブルまたは文字列で逆シリアル化する必要があるかどうかを知るにはどうすればよいですか?
私の方法はそのようなものです(テーブルを返しますが、Jsonが文字列をデータとして返すとクラッシュします):
public Task<Items> GetItemById(string id)
{
var client =
new RestClient(string.Format("{0}/{1}/{2}/{3}/{4}", _baseUrl,
AppResources.RestApiVersion, userId, token, AppResources.NotUse));
var tcs = new TaskCompletionSource<Items>();
var request = new RestRequest(string.Format("/items/get/{0}", id));
client.ExecuteAsync<Items>(request, response => {
try
{
tcs.SetResult(new JsonDeserializer().Deserialize<Items>(response));
}
catch (InvalidCastException e)
{
}
});
return tcs.Task;
}