Json.Netを使ってDictionary<byte[] , int>
をシリアル化しようとしましたが、すべてのbyte []を "System.Byte []"に変換しました。しかし、もし私が辞書のキーと値のタイプを逆にしたら。これは、Base64を使ってbyte []をシリアライズするのに非常にうまく動作します。なぜ私はバイト[]キーのために動作しないのだろうか?背後にある理由は何ですか?以下は 辞書キーのときにJson.Netがバイト[]を正しくシリアル化しないのはなぜですか?
var dict1 = new Dictionary<byte[], int>
{
[Guid.NewGuid().ToByteArray()] = 1,
[Guid.NewGuid().ToByteArray()] = 2
};
string dict1Json = JsonConvert.SerializeObject(dict1);
Console.WriteLine(dict1Json);
//{ "System.Byte[]":1,"System.Byte[]":2}
var dict2 = new Dictionary<int, byte[]>
{
[1] = Guid.NewGuid().ToByteArray(),
[2] = Guid.NewGuid().ToByteArray()
};
var dict2Json = JsonConvert.SerializeObject(dict2);
Console.WriteLine(dict2Json);
//{ "1":"JgrYtch/6Eq3Nyoe8pnnpg==","2":"KbfVMzjz20yCYvc9FiVKKA=="}