序列化 C# DataContractJsonSerializer 中空字符的异常

本文关键字:字符 异常 DataContractJsonSerializer 序列化 | 更新日期: 2023-09-27 18:32:01

我想在 C# 中反序列化 byte[] 数组中的字节流。byte[] 数组的长度为 8196 字节,从 TCP/IP 连接获取其信息。

当我将该数组提供给System.Runtime.Serialization.Json.DataContractJsonSerializer的ReadObject方法时,它会向我抛出一个SerializationException,并显示消息"遇到意外字符'''0'"。

我该如何解决这个问题?

序列化 C# DataContractJsonSerializer 中空字符的异常

你是如何阅读字符串的?通常,"''0"错误指向编码问题。字节流可以使用特定类型的编码,您要么强制使用自己的编码,要么以假定与流的实际编码不一致的特定编码的方式进行反序列化。

http://social.msdn.microsoft.com/Forums/en/wcf/thread/b80c9aa7-a3d1-4aa0-b61a-35363cbc177e 描述了替换以下代码行的情况:

s = ASCIIEncoding.Default.GetString(ms.GetBuffer());

跟:

        ms.Seek(0, SeekOrigin.Begin);
        StreamReader sr = new StreamReader(ms);
        s = sr.ReadToEnd();

修复了问题。也许类似的事情也适用于您的情况?