C# Json反序列化 数据协定类型 无法反序列化 由于未找到必需的数据成员
反序列化的时候出现了以下的错误信息。
System.Runtime.Serialization.SerializationException: 数据协定类型“TestEntity”无法反序列化,由于未找到必需的数据成员“multipleChoice, runTimeDisplayColumns”。 在 System.ComponentModel.ReflectPropertyDescriptor.SetValue(Object component, Object value)
详细原因是:我在反序列化的实体类中新加了两个属性:
private bool multipleChoice;
/// <summary>
/// 帮助引擎是否同意多选
/// </summary>
[XmlIgnore]
[Browsable(false)]
public bool MultipleChoice
{
get
{
return multipleChoice;
}
set
{
multipleChoice = value;
}
} private string runTimeDisplayColumns;
/// <summary>
/// 帮助引擎执行时显示的列
/// </summary>
[XmlIgnore]
[Browsable(false)]
public string RunTimeDisplayColumns
{
get
{
return runTimeDisplayColumns;
}
set
{
runTimeDisplayColumns = value;
}
}
在使用之前保存的Json串反序列化的时候,新增的两个两个属性。没有相应的值,所以报出了上面的错误。
解决方法:
[DataContract]
public class TestEntity
{
private bool multipleChoice;
/// <summary>
/// 帮助引擎是否同意多选
/// </summary>
[XmlIgnore]
[Browsable(false)]
[DataMember(IsRequired = false)]
public bool MultipleChoice
{
get
{
return multipleChoice;
}
set
{
multipleChoice = value;
}
} private string runTimeDisplayColumns;
/// <summary>
/// 帮助引擎执行时显示的列
/// </summary>
[XmlIgnore]
[Browsable(false)]
[DataMember(IsRequired = false)]
public string RunTimeDisplayColumns
{
get
{
return runTimeDisplayColumns;
}
set
{
runTimeDisplayColumns = value;
}
}
}
通过DataMember(IsRequired = false)属性表面此属性。不是必须的。
这种话。保证了在反序列化的时候。即使JSON串内缺少该属性的定义能正常反序列化。
小注:
在属性上加入DataMember(IsRequired = false)后。相应的类上必须加入 [DataContract]标识。
C# Json反序列化 数据协定类型 无法反序列化 由于未找到必需的数据成员的更多相关文章
- SpringMVC Ueditor1.4.3 未找到上传数据
ueditor自事的fileupload组件与spring的有冲突.将那个类BinaryUploader 重写就可以了 return storageState; ...
- 对 JSON 数据进行序列化和反序列化
如何:对 JSON 数据进行序列化和反序列化 2017/03/30 作者 JSON(JavaScript 对象符号)是一种高效的数据编码格式,可用于在客户端浏览器和支持 AJAX 的 Web 服务之间 ...
- WCF初探-16:WCF数据协定之基础知识
数据协定概念 “数据协定”是在服务与客户端之间达成的正式协议,用于以抽象方式描述要交换的数据. 也就是说,为了进行通信,客户端和服务不必共享相同的类型,而只需共享相同的数据协定. 数据协定为每一个做数 ...
- WCF初探-18:WCF数据协定之KnownType
KnownTypeAttribute 类概述 在数据到达接收终结点时,WCF 运行库尝试将数据反序列化为公共语言运行库 (CLR) 类型的实例.通过首先检查传入消息选择为反序列化而实例化的类型,以确定 ...
- WCF学习心得------(六)数据协定
--前言 最近各种事忙的把之前的WCF学习给耽误了一些,今天抽时间把之前的学习内容给总结了一下,因为知识点比较细碎没有做太多的练习示例,只是对其中关键的知识点做了总结,希望可以对大家有所帮助. 第六章 ...
- WCF基础之数据协定
数据协定最重要的当然就是DataContract和DataMember.这两个特性能应用到类.结构和枚举.这个两个特性跟服务契约的特点是一样的,只有被DataContract标记的类和类中被标记Dat ...
- WCF初探-17:WCF数据协定之等效性
数据协定等效性特点概述 对于客户端要将某种类型的数据成功发送到服务,或者服务要将数据成功发送到客户端的情况,接收端上并不一定必须存在此发送数据类型. 唯一的要求是两种类型的数据协定应该等效. 要使数据 ...
- 我们一起学习WCF 第五篇数据协定和消息协定
A:数据协定(“数据协定”是在服务与客户端之间达成的正式协议,用于以抽象方式描述要交换的数据. 也就是说,为了进行通信,客户端和服务不必共享相同的类型,而只需共享相同的数据协定. 数据协定为每个参数或 ...
- 采购申请 POCIRM-001:ORA-01403: 无论数据未找到
今天就让同事帮忙看问题.当请求生成采购订单,在销售模块错误提交销售订单 查看请求日志 +-------------------------------------------------------- ...
随机推荐
- gcc 变量类型大小 练习 远离 cygwin64 需要带dll
/* testmini.c -- very simple test program for the miniLZO library */ #include <stdio.h> #inclu ...
- bzoj2402 陶陶的难题II
这个是题目描述: 题解: 啊啊啊啊啊…… 垃圾分数规划. 垃圾树链剖分. 垃圾斜率优化. 垃圾darkbzoj. 这里才是题解: 我们设那个分数的值=k,那么有 $(yi-k*xi)+(qj-k*pj ...
- [HIHO] 1048 铺地板
历经千辛万苦,小Hi和小Ho终于到达了举办美食节的城市!虽然人山人海,但小Hi和小Ho仍然抑制不住兴奋之情,他们放下行李便投入到了美食节的活动当中.美食节的各个摊位上各自有着非常多的有意思的小游戏,其 ...
- JavaScript中函数的定义
JavaScript中函数的定义 制作人:全心全意 在JavaScript中,函数是由关键字function.函数名加一组参数以及置于大括号中需要执行的一段代码定义的.定义函数的基本语法格式如下: f ...
- ubuntu 宝塔安装一条龙服务
ubuntu 安装 1, wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash ...
- json_decode 解析带BOM头文件错误
//取前三个字符 并转化为ASCII 判断是否为BOM文件 $charset[1] = substr($result, 0, 1); $charset[2] = substr($result, 1, ...
- 【转】Unable to load native-hadoop library for your platform(已解决)
1.增加调试信息寻找问题 2.两种方式解决unable to load native-hadoop library for you platform 附:libc/glibc/glib简介 参考: 1 ...
- Python中的函数(4)
一.传递列表 你经常会发现,向函数传递列表很有用,这种列表包含的可能是名字.数字或者更复杂的对象(如字典). 将列表传递给函数后,函数就能直接访问其内容. 栗子:假设有一个用户列表,我们要和其中每一位 ...
- python str.format 中文对齐的细节问题
写了一个练手的爬虫...在输出的时候出现了让人很不愉♂悦的问题 像这样: 令人十分难受啊! #----------------------------------------------------- ...
- sql使用row_number()查询标记行号
背景: 在分页功能中,记录需分页显示,需要row_number()函数标记行号. 数据表: 排序之前数据表显示: sql语句: select ROW_NUMBER() over(order by id ...