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

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;}

通过测试,异常解决。

转载于:https://www.cnblogs.com/DCLi/p/5198227.html

使用DataContractJsonSerializer发序列化对象时出现的异常相关推荐

  1. 什么是 serialVersionUID ? 序列化对象时必须提供 serialVersionUID 吗?

    什么是 serialVersionUID ? 序列化对象时必须提供 serialVersionUID 吗? 1,什么是 serialVersionUID ? 顾名思义,serialVersionUID ...

  2. 【玩转Golang】 自定义json序列化对象时,非法字符错误原因

    由于前台web页面传来的日期对象是这样的格式"2010-11-03 15:23:22",所以我安装网上查来的办法,自定义包装了time.Time对象,实现自己的Marshal和Un ...

  3. java 实例化异常_如何处理实例化类对象时发生的异常

    java version "1.7.0_45" 你好 我正在构造函数中初始化类方法.但是,新URL(uploadUrl)将在构造函数中引发异常.因此,如果发生这种情况,用户应该无法 ...

  4. Java 序列化对象的一个使用案例

    <Effective Java>中序列化一节关于java的序列化存在如下说法: 对象序列化(object serialization)API,它提供了一个框架,用来将对象编码成字节流(se ...

  5. python 对象序列化 pickling_[Python]对dat文件的操作:序列化对象

    一:dat文件 在我之前的博客中,我介绍了对txt文件操作的一些相关知识,以及如何对其进行读写操作,也介绍了文本文件和二进制文件的一些区别.虽然对txt文件操作已经能够满足储存数据的需求,但txt文件 ...

  6. 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用

    学习 EF Code First+MVC 时遇到了在请求JsonResult时出现 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用 的异常,原因 ...

  7. 序列化类型为XX的对象时检测到循环引用

    现象描述: MVC4中将dataTable转换成Json时,总是提示错误:"序列化类型为"System.Reflection.RuntimeModule"的对象时检测到循 ...

  8. 序列化对象为什么需要定义UID值

    序列化对象为什么需要定义serialVersionUID值? 首先,我们先来看看源码是怎么描述的? The serialization runtime associates with each ser ...

  9. Hessian RPC示例和基于Http请求的Hessian序列化对象传输

    本文主要介绍两个案例,第一个是使用Hessian来实现远程过程调用,第二个是通过Hessian提供的二进制RPC协议进行和Servlet进行数据交互,Hessian本身即是基于Http的RPC实现. ...

最新文章

  1. Unix_Linux系统定时器的应用(案例)
  2. C语言中的typedef
  3. Kubernetes 桌面客户端:Lens
  4. 干货实战|基于Elastic Stack的日志分析系统
  5. ASP+页缓存OutputCache Duration用法
  6. 代码合并工具_合并上千个Excel表格,1秒就能完成
  7. 数据包络分析方法与maxdea软件_SEM常用的4种数据分析方法,让你的优化工作事半功倍!...
  8. attempt to write a readonly database 错误
  9. clickhouse数据类型
  10. 手机微信如何设置浏览器打开时提醒
  11. Linux下复制粘贴快捷键
  12. linux修改默认22端口失败,【原创文章】修改亚马逊AWS EC2 LINUX系统SSH默认22端口失败的原因和解决办法...
  13. 南艺计算机作曲专业怎样,南京艺术学院作曲与作曲技术理论专业/学费/录取分数线/怎么样...
  14. qt中画出漂亮的函数曲线
  15. 遥感影像基于样本的面向对象分类方法
  16. 常见离散型随机变量比较
  17. Window系统安装FFmpeg
  18. Python参数化接口测试demo笔记
  19. 工程管理系统企业工程管理系统简介
  20. Wireshark使用详解

热门文章

  1. 不擅于社交的原因?如何提高社交能力?
  2. 着眼未来,Android 音视频前(钱)景无限
  3. 基于Matlab的图片平滑和锐化处理
  4. 文本挖掘之WordCloud+Python3快速生成中英文词云图
  5. 光的双缝干涉强度和干涉条纹
  6. Excel学习笔记:P2-表格设计与加总函数
  7. 大数据就在我们的日常生活中
  8. php 唱吧导出,深入曝光唱吧G2真的好吗?怎么样呢?良心点评实际情况
  9. 【初阶与进阶C++详解】第十九篇:哈希(哈希函数+哈希冲突+哈希表+哈希桶)
  10. mysql 5.5织梦_织梦5.5下载站源代码带真实下载数据链接地址