4
我在我的項目中提出了這個問題,我有一個表中的json字符串,它是一個序列化的實體。
的Json反序列化實體沒有意識到它的類型
{
"Entity":{
"__type":"Book:#Definition",
"BookId":3,
"BookName":"Meloon Dreams",
"Type":2,
"Price":35
}
}
圖書類
namespace Definition
{
[DataContract]
public class Book : IEntity
{
[DataMember]
public int BookId { get; set; }
[DataMember]
public string BookName { get; set; }
[DataMember]
public BookType Type { get; set; }
[DataMember]
public decimal Price { get; set; }
}
}
工作流程類
public class Workflow
{
public int WorkflowId { get; set; }
public IEntity Entity { get; set; }
}
所以,在控制器類我從TABL JSON字符串e,我想將其反序列化爲它自己的類型。但是,只有json字符串中的__type可以幫助我處理它的類型。我的意思是
workflow.Entity = Serializer.JsonDeserialize<IEntity>(jsonString);
我需要把書,而不是IEntity
這有可能在不改變類的結構,或者是有可能從JSON獲取類型並將其轉換爲鍵入並把它,而不是IEntity?
問題幫了一點,但是,在我的項目,我不使用一個通用類,它是一個通用的方法。我的意思是我的工作流實體屬性需要顯式類型而不是泛型類型。所以我需要將json實體轉換爲它自己的類型並將其傳遞給解串器。不過,我會繼續檢查這個反射。謝謝。 – ibubi
我已經用代碼示例更新了答案,並且更改了一個更適合的鏈接(關於MakeGenericMethod方法) - 希望它有助於 – Kel
我必須爲我的目的更改我的類結構。因爲我的實體要在json中轉換的類型保存在json中:)這是一個悖論,我需要用字符串方法解析json來獲取類型,所以我決定改變我的類結構。但我將這篇文章標記爲答案,因爲我以這種方式實現了我的目的,並涵蓋了這個話題。不管怎麼說,還是要謝謝你。 – ibubi