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

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

Сообщение Anonymous »

У меня есть серверная служба .net coregraphql, используемая в веб-сборке blazor с запросом Graphql GetData, имеющим перечисление, например

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

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

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

Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
Unhandled exception rendering component: Error converting value "SECOND_ITEM" to type 'SomeEnumTypes'. Path 'data.GetData[0].someEnumType', line 1, position 1375.
Newtonsoft.Json.JsonSerializationException: Error converting value "SECOND_ITEM" to type 'SomeEnumTypes'. Path 'data.GetData[0].someEnumType', line 1, position 1375.
---> System.ArgumentException: Requested value 'SECOND_ITEM' was not found.
at Newtonsoft.Json.Utilities.EnumUtils.ParseEnum(Type enumType, NamingStrategy namingStrategy, String value, Boolean disallowNumber)
at Newtonsoft.Json.Converters.StringEnumConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)

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

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

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

_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#»