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
Ответить

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

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

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

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

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