Newtonsoft.json でバイト配列をシリアライズすると、BASE64 にエンコードされて出力されてしまいます。
var foo = new Foo { Data = new byte[] { 0x48, 0x49, 0x1d, 0x52, 0x53, 0x1d, 0x56, 0x57, 0x00 } };
var json = JsonConvert.SerializeObject(foo);
Console.WriteLine(json);
public class Foo
{
public byte[] Data { get; set; }
}
出力結果
{"Data":"SEkdUlMdVlcA"}
個人的には以下のように出力されることを期待していました。
{"Data":[48, 49, 1D, 52, 53, 1D, 56, 57, 00]}
解決策
配列ではなくリストを使うと解決されるという記事を見て、上記のコードを変更したら期待した出力になりました。
しかし、他のケースではリストでも BASE64 で出力される場合があったりしたので、素直に int
に変更しました。