最近服务器上的某个程序的错误日志中频繁出现以下异常:

Deserialising: There was an error deserializing the object of type {type}.

The token '"' was expected but found 'Â'

通过分析发现是使用DataContractJsonSerializer发序列化对象时出现的异常

但是把日志中出错的json串拷贝到本机测试时又没有问题,很是费解,最后在网上找到了解决办法

http://stackoverflow.com/questions/23909231/datacontractjsonserializer-readobject-sometimes-throws-the-token-was-expected

我的反序列化的代码如下:

            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(json.ToCharArray()));
T obj = (T)serializer.ReadObject(ms);
ms.Close();

错误原因是因为json串种含有大量非ANSI的字符,解决办法如下:

            byte[] result = Encoding.UTF8.GetBytes(json);
using (var jsonReader = JsonReaderWriterFactory.CreateJsonReader(result, XmlDictionaryReaderQuotas.Max))
{
var serializer = new DataContractJsonSerializer(typeof(T));
T obj = (T)serializer.ReadObject(jsonReader);
return obj;
}

通过测试,异常解决。

最新文章

  1. hdu 5384 Danganronpa
  2. BestCoder Round #85(ZOJ1569尚未验证)
  3. 关于setInterval()里的this和细节
  4. Linux系统编程@文件操作(一)
  5. HttpWebRequest's Timeout and ReadWriteTimeout — What do these mean for the underlying TCP connection?
  6. 【LeetCode 231】Power of Two
  7. linux根目录下的文件夹
  8. Java基础知识强化47:StringBuffer类之StringBuffer的三个面试题
  9. php部分学习笔记
  10. JNDI实现服务器(tomcat)与数据库(mysql)连接的数据源配置以及获取连接的java代码
  11. Everything开机自启
  12. 20160227.CCPP体系详解(0037天)
  13. Imcash平台测评报告
  14. vs2017 代码格式化 文档排版 编辑 设置文档的格式
  15. centos7编译安装lnmp
  16. 结对第2次作业——WordCount进阶需求
  17. js基础学习笔记(三)
  18. TensorFlow 开发环境搭建--Pycharm
  19. java date相关
  20. '<>' operator is not allowed for source level below 1.7

热门文章

  1. 练习:等待用户输入input()
  2. 20194651—自动生成四则运算题第一版报告chris
  3. 2019ccpc哈尔滨打铜记
  4. linux 统计文件夹下文件,文件夹,所有个数
  5. Linux高级系统恢复技术
  6. 我国自主研发的先进辅助驾驶系统(ADAS)控制器产品实现量产配套
  7. vue.extend 拓展
  8. Java第一次代码作业汇总
  9. string的基本操作
  10. Java @Deprecated Annotation(注解)