23

クライアント側は正式な JSON コンテンツを受け取ります"{\"Id\":[1,2,3],\"Size\":56}"が、バイト配列のデシリアライズでエラーが発生します。

1 以下のステートメントでエラーが発生します

IRestResponse<key> response = client.Execute<key>(request);

2 エラー メッセージは、「このオブジェクトにはパラメーターなしのコンストラクターが定義されていません」です。

3 クライアント サイズのオブジェクト クラスは、サーバー側のオブジェクト クラスと同じです。

public class key
{
    public byte[] id { get; set; }
    public int Size { set; get; }
}

4 文字列と整数を含むオブジェクトを JSON 形式で渡そうとしましたが、バイト配列以外は問題ありません。

4

3 に答える 3

55

RestSharp の JsonDeserializer は配列を逆シリアル化できません。byte[]使用する代わりにList<byte>。詳細については、https://github.com/restsharp/RestSharp/wiki/Deserializationを参照してください。

于 2013-12-17T14:38:17.430 に答える
26

私もこの問題に遭遇しました。私の解決策は、RestSharp を使用して生の実行を実行し、Json.NET を使用して結果を逆シリアル化することでした。

var response = client.Execute(request);
var keyResponse = JsonConvert.DeserializeObject<key>(response.Content);

keyResponse は、JSON コンテンツから逆シリアル化されたキー クラスのインスタンスになります。

于 2012-06-20T14:34:19.237 に答える