C# Json反序列化 資料協定型別 無法反序列化 因為未找到必需的資料成員
背景今天在使用: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]標識。
相關文章
- Python序列化模型資料為JSONPython模型JSON
- json序列化與反序列化 (map,struct, slice, 基本資料型別)JSONStruct資料型別
- Sqlalchemy 資料模型序列化(轉JSON)SQL模型JSON
- json無法序列化問題JSON
- [BUG反饋]會員“最後登入IP”資料無法獲取
- 詳解電子表格中的json資料:序列化與反序列化JSON
- C#序列化和反序列化(json)C#JSON
- C# 序列化與反序列化jsonC#JSON
- es6將txt資料序列化成jsonJSON
- 高效的序列化/反序列化資料方式 Protobuf
- C# Json 序列化與反序列化一C#JSON
- C# Json 序列化與反序列化二C#JSON
- Python之資料序列化(json、pickle、shelve)PythonJSON
- 資料的序列化&持久化持久化
- C# Json反序列化C#JSON
- flutter json_annotation和json_serializable處理json資料序列化FlutterJSON
- 附加資料庫失敗,無法升級資料庫,因為它是隻讀的資料庫
- 在C#中實現Json的序列化與反序列化C#JSON
- 資料解析器以及序列化和反序列化
- C# 中使物件序列化/反序列化 Json 支援使用派生型別以及泛型的方式C#物件JSON型別泛型
- JavaScript物件序列化為JSONJavaScript物件JSON
- 序列化,資料庫存多個欄位資料資料庫
- 序列化資料傳輸壓縮
- json資料出現{“$ref:”$[0]},無法得到所有資料JSON
- “無法刪除資料庫,因為該資料庫當前正在使用” – 解決方法資料庫
- STANDBY資料庫因為資料檔案配置不對,造成無法繼續恢復資料庫
- JSON 物件序列化、反序列化JSON物件
- 資料庫併發如何讓資料操作序列化資料庫
- Apache Flink 進階(五):資料型別和序列化Apache資料型別
- FastJson整形資料反序列化的坑ASTJSON
- C#中實現JSON功能及物件的序列化和反序列化C#JSON物件
- 如何成為資料庫管理員(DBA)?資料庫
- python-45-ajax資料序列化Python
- java 解析php序列化資料問題JavaPHP
- 物件序列化後,寫入Oracle Blob欄位:“無法從套接字讀取更多的資料”物件Oracle
- JSON資料處理框架Jackson精解第一篇-序列化與反序列化核心用法JSON框架
- C# 生成Json資料C#JSON
- JSON序列化時將BigDecimal型別轉換成String型別JSONDecimal型別