System.Text.Json에서 사용자 정의 열거형 값 이름 사용
JsonConverter
클래스를 사용하여 열거형 값에 대한 사용자 정의 이름을 지정할 수 있습니다. 방법은 다음과 같습니다.
<code class="language-csharp">public class CustomEnumStringEnumConverter : JsonConverter<Enum> { protected override Enum Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { // 从JSON文本解析枚举名称 var name = reader.GetString(); // 获取枚举类型 var enumType = typeToConvert; // 按名称查找枚举值 Enum value; if (!Enum.TryParse(enumType, name, true, out value)) { throw new JsonException("无效的枚举值: " + name); } return value; } protected override void Write(Utf8JsonWriter writer, Enum value, JsonSerializerOptions options) { // 获取枚举值的自定义名称 var customName = GetCustomName(value); // 将自定义名称写入JSON文本 writer.WriteStringValue(customName); } private string GetCustomName(Enum value) { // 获取枚举值的字段信息 var fieldInfo = enumType.GetField(value.ToString()); // 获取应用于该字段的自定义属性 var attribute = fieldInfo.GetCustomAttribute<EnumMemberAttribute>(); // 返回属性中的自定义名称,如果未指定则返回默认名称 return attribute?.Value ?? value.ToString(); } }</code>
<code class="language-csharp">var options = new JsonSerializerOptions { Converters = { new CustomEnumStringEnumConverter() } };</code>
EnumMember
속성을 사용하여 열거형 값을 장식하여 사용자 정의 이름을 지정합니다.
<code class="language-csharp">public enum Example { [EnumMember(Value = "Trick-Or-Treat")] TrickOrTreat, // 其他枚举值 }</code>
이제 사용자 정의 JsonConverter
를 사용하여 열거형을 직렬화 및 역직렬화할 수 있습니다.
<code class="language-csharp">// 序列化枚举值 var json = JsonSerializer.Serialize(value, options); // 反序列化枚举值 var value = JsonSerializer.Deserialize<Enum>(json, options);</code>
지침:
위 내용은 System.Text.Json에서 사용자 정의 열거형 값 이름을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!