C#DataContractJsonSerializer中null字符的SerializationException

时间:2012-04-24 10:01:54

标签: c# .net json

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

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你是怎么读字符串的?通常,'\ 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();

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