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中序列化/反序列化JSON格式的資料PythonJSON
- json序列化與反序列化 (map,struct, slice, 基本資料型別)JSONStruct資料型別
- Sqlalchemy 資料模型序列化(轉JSON)SQL模型JSON
- json無法序列化問題JSON
- Python之資料序列化(json、pickle、shelve)PythonJSON
- [BUG反饋]會員“最後登入IP”資料無法獲取
- 詳解電子表格中的json資料:序列化與反序列化JSON
- es6將txt資料序列化成jsonJSON
- C#序列化和反序列化(json)C#JSON
- C# Json反序列化C#JSON
- flutter json_annotation和json_serializable處理json資料序列化FlutterJSON
- 高效的序列化/反序列化資料方式 Protobuf
- C#支援將json中的多種型別反序列化為object型別C#JSON型別Object
- 資料的序列化&持久化持久化
- C# 中使物件序列化/反序列化 Json 支援使用派生型別以及泛型的方式C#物件JSON型別泛型
- JavaScript物件序列化為JSONJavaScript物件JSON
- 資料解析器以及序列化和反序列化
- JSON序列化時將BigDecimal型別轉換成String型別JSONDecimal型別
- FastJson整形資料反序列化的坑ASTJSON
- Apache Flink 進階(五):資料型別和序列化Apache資料型別
- 序列化,資料庫存多個欄位資料資料庫
- C#中實現JSON功能及物件的序列化和反序列化C#JSON物件
- JSON資料處理框架Jackson精解第一篇-序列化與反序列化核心用法JSON框架
- python json反序列化為物件PythonJSON物件
- python-45-ajax資料序列化Python
- 序列化資料傳輸壓縮
- “無法刪除資料庫,因為該資料庫當前正在使用” – 解決方法資料庫
- 資料庫併發如何讓資料操作序列化資料庫
- [C#] CHO.Json操作Json資料C#JSON
- Python中巢狀自定義型別的JSON序列化與反序列化Python巢狀型別JSON
- 希捷硬碟插入電腦無反應資料恢復希捷硬碟資料恢復
- JSON-B:簡化 JSON 序列化和反序列化JSON
- 如何成為資料庫管理員(DBA)?資料庫
- 設定Springboot返回jackson資料序列化Spring Boot
- Kotlin Json 序列化KotlinJSON
- Java物件的序列化與反序列化-Json篇Java物件JSON
- Flutter中JSON序列化與反序列化FlutterJSON
- 在Springboot + Mybaitis-plus 專案中利用Jackson實現json對java多型的(反)序列化Spring BootAIJSONJava多型
- 時間序列化資料庫選型?時序資料庫的選擇?資料庫