Сериализатор Graphql Newtonsoft выдает ошибку при анализе перечисленияC#

Место общения программистов C#
Ответить
Anonymous
 Сериализатор Graphql Newtonsoft выдает ошибку при анализе перечисления

Сообщение Anonymous »

У меня есть серверная служба .NET Core GraphQL, используемая в приложении веб-сборки Blazor с помощью запроса GetData GraphQL с таким перечислением:

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

public enum SomeEnumTypes : byte
{
None,
First,
SecondItem
}
Когда данные возвращаются из серверной части в этом запросе, SecondItem из перечисления возвращается клиенту как SECOND_ITEM, но это приводит к ошибке:

Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]

Необработанная обработка исключений компонент: ошибка преобразования значения «SECOND_ITEM» в тип «SomeEnumTypes». Путь «data.GetData[0].someEnumType», строка 1, позиция 1375.
Newtonsoft.Json.JsonSerializationException: ошибка преобразования значения «SECOND_ITEM» в тип «SomeEnumTypes». Путь «data.GetData[0].someEnumType», строка 1, позиция 1375.
System.ArgumentException: запрошенное значение «SECOND_ITEM» не найдено.
at Newtonsoft.Json.Utilities.EnumUtils.ParseEnum(Тип enumType, NamingStrategy namingStrategy, Строковое значение, логическое значение disallowNumber)

at Newtonsoft.Json.Converters.StringEnumConverter.ReadJson (читатель JsonReader, тип objectType, Object ExistingValue, сериализатор JsonSerializer)

< р>

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

SomeEnumTypes
перечисление находится в сторонней библиотеке nuget, поэтому я не могу вносить какие-либо изменения в перечисление напрямую.
Я пробовал несколько способов, включая написание пользовательских преобразователей для сериализатора Newtonsoft с регулярным выражением. для обработки подчеркиваний и даже создания словаря для этого перечисления для преобразования в конвертере, но бесполезно.

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

_graphqlClient = new GraphQLHttpClient(_configuration.GetValue("SomeKey"), new NewtonsoftJsonSerializer(options =>
{
options.Converters.Add(new SomeConverter())
}));
Что-то мне не хватает? Помощь будет оценена по достоинству.

Подробнее здесь: https://stackoverflow.com/questions/793 ... rsing-enum
Ответить

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

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

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

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

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