Dictionary для ошибки десериализации System.Text.Json [закрыто]C#

Место общения программистов 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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