JavaScriptSerializer與Json.NET枚舉序列化為字符串
使用JavaScriptSerializer序列化包含枚舉屬性的對象時,默認行為是輸出枚舉的整數值而不是其字符串表示形式。本文討論了自定義此行為並在JSON輸出中獲取枚舉字符串的方法,無需使用自定義JavaScriptConverters。
使用Json.NET的解決方案
Json.NET通過其JsonConverter屬性和內置的StringEnumConverter類型提供更便捷的解決方案。通過將屬性應用於相關的枚舉屬性:
<code class="language-csharp">using Newtonsoft.Json; using Newtonsoft.Json.Converters; [JsonConverter(typeof(StringEnumConverter))] public Gender Gender { get; set; }</code>
...您可以指定枚舉應序列化為字符串。有關StringEnumConverter的更多信息,請參閱其文檔。
其他選項
還有其他方法可以全局配置此轉換器:
<code class="language-csharp">serializer.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());</code>
此方法將轉換器應用於序列化過程中遇到的所有枚舉。
<code class="language-csharp">JsonConvert.SerializeObject(MyObject, new Newtonsoft.Json.Converters.StringEnumConverter());</code>
進一步的自定義
StringEnumConverter允許進行其他自定義,例如控制枚舉字符串的大小寫以及是否接受數值。這可以通過StringEnumConverter(NamingStrategy, Boolean)構造函數實現。
以上是如何使用JavaScriptSerializer和json.net序列化枚舉為字符串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!