次のプロパティを持つ単純なクラスがあります。
[JsonObject(MemberSerialization.OptIn)]
public class Person
{
...
[JsonProperty(PropertyName = "Photograph"]
public byte[] Photograph { get; set; }
...
}
しかし、Photographプロパティに画像を入力し、http経由で転送すると、これは機能しません。これは簡単な質問のように聞こえるかもしれませんが、何時間もオンラインで調べた後、まだ解決策を見つけていませんが、Json.NETでバイト配列をシリアライズ/デシリアライズするにはどうすればよいですか?どの属性タグが必要ですか、またはこれを別の方法で行う必要がありますか?どうもありがとう!
public static T Deserialize<T>(byte[] data) where T : class
{
using (var stream = new MemoryStream(data))
using (var reader = new StreamReader(stream, Encoding.UTF8))
return JsonSerializer.Create().Deserialize(reader, typeof(T)) as T;
}
Byte []を文字列に変換し、JsonConvertメソッドを使用してオブジェクトを取得できます。
var bytesAsString = Encoding.UTF8.GetString(bytes);
var person = JsonConvert.DeserializeObject<Person>(bytesAsString);
LINQ to JSON を使用している場合、これを行うことができます。
JObject.Parse(Encoding.UTF8.GetString(data));
結果は動的なJObject
になります。
これはOPがやろうとしていたことではないかもしれませんが、この質問に出くわすbyte[]
をデシリアライズしようとする他の人にとっては便利かもしれません。