DeSerialize A Json в C# с json.net (Newtonsoft)C#

Место общения программистов C#
Anonymous
DeSerialize A Json в C# с json.net (Newtonsoft)

Сообщение Anonymous »

Я использую newtonsoft.json (v6.0.0.0), и я пытаюсь оставить JSON в перечисление. это: < /p>

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

[JsonObject]
public class MyModel
{
/// 
/// Gets or sets the username
/// 
[Display(Name = @"UserName")]
[JsonProperty(PropertyName = "userName", Required = Required.Always)]
public string UserName { get; set; }

/* .
. REST OF THE MODEL
.
. */

/// 
/// Gets or sets the enum model.
/// 
[Display(Name = @"EnumModel")]
[JsonProperty(PropertyName = "enummodel", Required = Required.Always)]
public MyEnumModel EnumModel { get; set; }
}
< /code>
myenummodel - это перечисление с этими значениями: < /p>
[JsonConverter(typeof(StringEnumConverter))]
public enum MyEnumModel
{
[EnumMember(Value = "My Value 1")]
MyValueOne,

[EnumMember(Value = "My Value 2")]
MyValueTwo,

[EnumMember(Value = "My Value 3")]
MyValueThree
}
Когда я сериализую это перечисление, я получаю правильное значение, определяемое атрибутом enummember . Таким образом, в результате вызова у меня есть JSON с значением «My Value 1» или «My Value 2» или «My Value 3».

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

"The value 'My Value 1' is not valid for EnumModel."
, похоже, не использует атрибут enummember для десериализации, потому что, когда я отправляю значение «myvalueone», это работает.
Что я пропустил? Как атрибут [enummember ()] действительно работает, когда я десюреализация?{
"userName":"testuser@gmail.com",
"enummodel":"My Value 1"
}
< /code>
Изменить 2: проверка модели < /h2>
Извините, но я забыл упомянуть одну важную вещь. Я использую, в моем контроллере проверка состояния модели: < /p>
if (!this.ModelState.IsValid)
{
return this.BadRequest(this.ModelState);
}
< /code>
Я думаю, что JSON правильно десериализируется с атрибутами Enummmember, но проверка не удалась, поскольку валидатор не использует Enummember для проверки моей модели? Это правильно?

Подробнее здесь: https://stackoverflow.com/questions/354 ... newtonsoft

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