首頁 > 後端開發 > C++ > 如何使用JavaScriptSerializer和json.net序列化枚舉為字符串?

如何使用JavaScriptSerializer和json.net序列化枚舉為字符串?

Linda Hamilton
發布: 2025-01-29 09:26:10
原創
120 人瀏覽過

How to Serialize Enums as Strings Using JavaScriptSerializer and Json.NET?

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的更多信息,請參閱其文檔。

其他選項

還有其他方法可以全局配置此轉換器:

  • 枚舉定義:將屬性添加到枚舉本身,確保所有枚舉實例都序列化為字符串。
  • JsonSerializer:在JsonSerializer中包含轉換器:
<code class="language-csharp">serializer.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());</code>
登入後複製

此方法將轉換器應用於序列化過程中遇到的所有枚舉。

  • JsonConverter:另一種方法是使用JsonConvert類:
<code class="language-csharp">JsonConvert.SerializeObject(MyObject, new Newtonsoft.Json.Converters.StringEnumConverter());</code>
登入後複製

進一步的自定義

StringEnumConverter允許進行其他自定義,例如控制枚舉字符串的大小寫以及是否接受數值。這可以通過StringEnumConverter(NamingStrategy, Boolean)構造函數實現。

以上是如何使用JavaScriptSerializer和json.net序列化枚舉為字符串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板