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中文网其他相关文章!