Newtonsoft.Jsonを使用して、Webサービスからオブジェクトへの出力を逆シリアル化します。アバターを保持するためのBitmap
プロパティ(という名前)をクラスに追加するまでは、問題なく機能しました。User
Webサービスは、そのプロパティをBase64文字列として返します。これは予想どおりです。問題は、JSONをWSからaに変換し直そうとすると、次のコードブロックでList<User>
aがスローされることです。JsonSerializationException
// T is IList<User>
response.Content.ReadAsStringAsync().Proceed(
(readTask) =>
{
var json = ((Task<string>)readTask).Result;
var result = JsonConvert.DeserializeObject<T>(json); //<-- it fails here
// do stuff!
});
例外からの出力は次のとおりです。
Error converting value "System.Drawing.Bitmap" to type 'System.Drawing.Bitmap'. Path '[2].Avatar
内側の例外を見てください:
{"Could not cast or convert from System.String to System.Drawing.Bitmap."}
Base64文字列の解析に失敗することは明らかですが、その理由は明らかではありません。
アイデア/回避策はありますか?
編集
私Convert.FromBase64String
はバイト配列を取得し、そこからビットマップをロードするために使用できることを知っています。次に、質問を更新して、そのフィールドのみをスキップまたは手動で解析する方法について質問したいと思います。すべてのJSONを手動で解析する必要があるので避けたいと思います。これも可能ですか?
編集2
根本的な問題を発見しました:JSONがWebサービスで正しくシリアル化されていません(そしてその理由がわかりません)。これは少し違う問題だと思いましたが、違います。"System.Drawing.Bitmap"
私のWebサービスは、base64コンテンツの代わりに文字列を返すだけです。したがって、JsonSerializationException
。
私はその問題を解決することができませんでした、私が見つけた唯一の解決策は私のフィールドをに変えることbyte []
です。