背景今天在使用: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字串內缺少該屬性的定義能正常反序列化。
小註:
在屬性上加上DataMember(IsRequired = false)後,對應的類別上必須加上 [Contract]。
以上就是以上就是的內容,更多相關內容請關注PHP中文網(www.php.cn)!的內容,更多相關內容請關注PHP中文網(www.php.cn)!