为什么字节数组在序列化时会变成乱码?

时间:2017-11-16 18:07:11

标签: .net arrays json bytestream

通过这样的调用传递的数据的原始结构会发生什么:

 MyImg bytes = new MyImg
            {
                Id = 1,
                Img = new byte[] { 1, 0, 5 },
                Text = "hiiiiiii"
            };

        IFormatter formatter2 = new BinaryFormatter();
        using (MemoryStream stream = new MemoryStream())
        {
            formatter2.Serialize(stream, bytes);
            bytes.Img = stream.ToArray();
        }

这会产生很多抽象:

{" ID":1," IMG":" AAEAAAD ///// AQAAAAAAAAAMAgAAAEpNZXNzYWdlQm9hcmRCYWNrZW5kLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJU1lc3NhZ2VCb2FyZEJhY2tlbmQuQ29udHJvbGxlcnMuTXlJbWcDAAAAEzxJZD5rX19CYWNraW5nRmllbGQUPEltZz5rX19CYWNraW5nRmllbGQVPFRleHQ + a19fQmFja2luZ0ZpZWxkAAcBCAICAAAAAQAAAAkDAAAABgQAAAAIaGlpaWlpaWkPAwAAAAMAAAACAQAFCw ==""文本&# 34;:" hiiiiiii"}

我只是想了解最新情况。

串行/反序列化是一个通用的过程,还是.Net做了与Java不同的事情?

1 个答案:

答案 0 :(得分:2)

您的字节数组在JSON中编码为Base64字符串,这是确保序列化字节不包含序列化程序无法打印或使用的字符的常用方法他们自己(例如,XML中的<>,JSON等中的{}。)