нужна ваша помощь.Десериализация Json для NJsonSchema сгенерированного объекта с перечислениями, содержащими пробелы
Итак, у меня есть json-схема, и я использовал NJsonSchema.CodeGeneration инструмент для генерации .cs-модели. Я смог использовать его для десериализации json в объект успешно, пока вход json не содержал значения enum с пробелами в нем.
Вот что я имею в виду
В схеме у меня есть свойство, как:
...
prop1: {
enum: [ 'with space', 'withoutspace' ],
},
...
В сгенерированной модели .cs у меня есть соответствующее перечисление:
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "7.10.6235.25398")]
public enum Some_prop1
{
[System.Runtime.Serialization.EnumMember(Value = "with space")]
With_Space = 0,
[System.Runtime.Serialization.EnumMember(Value = "withoutspace")]
Withoutspace= 1,
}
И здесь представляют собой два примера ввода: Json 1:
{
...
"prop1": "with space",
...
}
Json 2:
{
...
"prop1": "withoutspace",
...
}
А потом я просто десериализации его, когда мне это нужно:
var someModel = Some.FromJson(json);
Он работает так, как надо для Json 2, но он не может распознать значение перечисления с пространство с ошибкой, как это:
«Ошибка преобразования значения \» с пространством \», чтобы ввести „com.company.model.Some_prop1“. Путь «prop1», строка 7, позиция 24.»
Так вот мой главный вопрос: есть ли способ справиться с такой ситуацией, не изменяя формат перечисления в схеме
Малый Дополнительный вопрос: при исследовании я столкнулся с еще одной проблемой - если я использую сериализацию, например some.ToJson(), мои перечисления будут сгенерированы таким образом, как «prop1»: 0, используя int < и так как json используется как пользователь дружественный способ изменить вещи, мне нужно это как «prop1»: «с пространством».
С уважением, Kanstantsin.
Можете ли вы поделиться источником для метода 'Some.FromJson (json);'? Основной сериализатор должен быть Json.NET, который поддерживает [de] сериализацию перечислений как строки, если используется ['StringEnumConverter'] (http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_Converters_StringEnumConverter.htm). – dbc
Да, вы так правы. Дело в том, что метод был сгенерирован, и я не смог найти подходящий способ добраться до этого конвертера.Я, но решение в ответ, я случайно нашел его сам. – kikaxa