C# Json反序列化 資料協定類型 無法反序列化 因為未找到必需的資料成員

黄舟
發布: 2017-02-15 11:37:22
原創
1490 人瀏覽過

背景今天在使用: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)!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板