Dictionary для ошибки десериализации System.Text.JsonC#

Место общения программистов C#
Anonymous
Dictionary для ошибки десериализации System.Text.Json

Сообщение Anonymous »

Я не могу десериализовать Dictionary из строки JSON, если ключ перечисления имеет формат kebab-case-lower. Я попытался определить JsonStringEnumConverter(JsonNamingPolicy.KebabCaseLower), но он не работает должным образом. Я использую компилятор C# 8 в .NET 8

Код: Выделить всё

using System.Text.Json;
using System.Text.Json.Serialization;
using System.Collections.Generic;

public class Program
{
public static void Main()
{
var json = @"{
""enum-one"": 1.1
}";

var options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
Converters = {
new JsonStringEnumConverter(JsonNamingPolicy.KebabCaseLower)
}
};

var enumOne = JsonSerializer.Deserialize(@"""enum-one""", options); // This works

var enumDictionary =  JsonSerializer.Deserialize(json, options); // This will throw error
}
}

public enum TestEnum
{
EnumOne = 1,
EnumTwo = 2,
EnumThree = 3
}
Необработанное исключение. System.Text.Json.JsonException: значение JSON не удалось преобразовать в TestEnum. Путь: $.enum-one | Номер строки: 1 | BytePositionInLine: 23.

Демонстрация кода: https://dotnetfiddle.net/XA0uPX
Я что-нибудь делал ошибаюсь или чего-то не хватает?

Подробнее здесь: https://stackoverflow.com/questions/791 ... tion-error

Вернуться в «C#»