在使用JavaScriptSerializer序列化包含枚舉屬性的對象時,經常會遇到JSON結果包含整數值而不是枚舉的字符串表示的問題。
考慮一個包含枚舉屬性的示例類:
<code class="language-csharp">public class Person { public int Age { get; set; } public Gender Gender { get; set; } }</code>
期望的JSON結果:
<code class="language-json">{ "Age": 35, "Gender": "Male" }</code>
問題:
使用JavaScriptSerializer,Gender屬性將被序列化為整數值,例如"Gender": 0,而不是"Gender": "Male"。
解決方案:
Newtonsoft.Json提供了一種使用[JsonConverter]
屬性的解決方案:
<code class="language-csharp">using Newtonsoft.Json; using Newtonsoft.Json.Converters; public class Person { public int Age { get; set; } [JsonConverter(typeof(StringEnumConverter))] public Gender Gender { get; set; } }</code>
[JsonConverter]
屬性添加到枚舉本身,以將所有實例序列化/反序列化為字符串。 其他配置:
StringEnumConverter(NamingStrategy, Boolean)
構造函數允許控制大小寫和數值的接受。 以上是我如何使用JavaScriptSerializer序列化枚舉?的詳細內容。更多資訊請關注PHP中文網其他相關文章!