Serializing .net enums sebagai rentetan di JSON dengan JavaScriptSerializer
standard .net sering output enums sebagai nilai integer mereka dalam JSON. Untuk bersiri mereka sebagai rentetan yang mewakili nama mereka, beberapa kaedah wujud. JavaScriptSerializer
Kaedah 1: Memanfaatkan JSON.NET's StringEnumConverter
. Penukar ini boleh digunakan pada tahap definisi enum atau tahap harta: StringEnumConverter
<code class="language-csharp">using Newtonsoft.Json; using Newtonsoft.Json.Converters; [JsonConverter(typeof(StringEnumConverter))] public enum Gender { Male, Female } public class Person { public int Age { get; set; } [JsonConverter(typeof(StringEnumConverter))] // Or apply at property level public Gender Gender { get; set; } }</code>
bersiri sebagai rentetan ("lelaki" atau "perempuan") dalam json yang dihasilkan. Gender
Kaedah 2: Pilihan Konfigurasi Global
Untuk aplikasi yang lebih luas, konfigurasikan secara global: StringEnumConverter
pada tahap enum: Gunakan penukar kepada definisi enum itu sendiri untuk siri rentetan yang konsisten merentasi semua kegunaan enum itu:
<code class="language-csharp"> [JsonConverter(typeof(StringEnumConverter))] public enum Gender { Male, Female }</code>
dengan : JsonSerializer
tambahkan penukar kepada contoh spesifik untuk mempengaruhi hanya enums yang bersiri dengan contoh itu: JsonSerializer
<code class="language-csharp"> var serializer = new JsonSerializer(); serializer.Converters.Add(new StringEnumConverter()); // ... use serializer to serialize your objects ...</code>
dengan : JsonConvert
Gunakan penukar secara langsung semasa bersiri:
<code class="language-csharp"> string json = JsonConvert.SerializeObject(myObject, new StringEnumConverter());</code>
Penyesuaian StringEnumConverter
menawarkan penyesuaian selanjutnya, membolehkan kawalan ke atas konvensyen penamaan dan pengendalian nombor. Rujuk dokumentasi JSON.NET untuk pilihan terperinci. StringEnumConverter
Atas ialah kandungan terperinci Bagaimana untuk bersiri. NET enum sebagai rentetan di JSON menggunakan JavaScriptSerializer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!