[英]C# Possible To Serialise Enum description instead Enum value With Json
我遇到過從兩個不同的 Web 服務收到響應的情況。 這兩個響應在結構上是相同的,但具有不同的父命名空間。 我想要做的是將這些響應轉換為一個標准類,然后我可以傳遞給父對象。 我認為最簡單的方法是將傳入的對象序列化為 Json,然后將對象反序列化為我的標准對象。 這使我的處理代碼相當簡單
var jsonString = JsonConvert.SerializeObject(serviceResponse.Results);
var commonObject = JsonConvert.DeserializeObject<StandardResult>(jsonString);
在大多數情況下,這是有效的。 但是,我在擴展 StandardResult 對象時發現了一些問題。
對象的屬性之一是具有以下屬性的類:
public class EntryDetailType
{
public string EntryNumber {get; set;}
public string EntryText {get; set;
public int Item {get; set;}
}
問題是Item
實際上可以是傳入數據中的兩個不同枚舉之一。 因此,盡管轉換正確地將枚舉的值放入Item
我不知道該值指的是哪個枚舉。 在這個階段我沒有使用 JsonConverter 類,因為對象非常大,如果可能的話,我想避免這種情況。
作為此過程的一部分,是否有一種方法可以獲取枚舉的描述而不是值,還是我將被迫編寫自己的 json 轉換器? 請記住, EntryDetailType
類不在我的項目中。 它是通過 wsdl 文檔添加的 Web 服務的返回類型。
好吧,如果類EntryDetailType
確實有一個名為Item
的類型為int
的屬性,則無法推斷您擁有的enum
哪個名稱表示值。
但是,如果該類具有任何enum
類型的屬性Item
,那么它就像使用內置StringEnumConverter
作為 SerializeObject 方法的第二個參數序列化為 Json 一樣簡單:
var jsonString = JsonConvert.SerializeObject(serviceResponse.Results, new Newtonsoft.Json.Converters.StringEnumConverter());
ps:我假設您使用的是 NewtonSoft 的 Json.NET。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.