Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk bersiri. NET enum sebagai rentetan di JSON menggunakan JavaScriptSerializer?

Bagaimana untuk bersiri. NET enum sebagai rentetan di JSON menggunakan JavaScriptSerializer?

DDD
DDDasal
2025-01-29 09:21:14296semak imbas

How to Serialize a .NET Enum as a String in JSON using JavaScriptSerializer?

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

Pendekatan yang paling mudah dan disyorkan menggunakan JSON.NET yang berkuasa

. 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>
Ini memastikan harta

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

Pembina

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn