Aspnet Core JSON игнорировать дубликаты полей

Как игнорировать дубликаты полей?

Например, у меня есть этот сырой JSON { "Value": 3, "Name": "Test", "value": "irrelevant" }

Я хотел бы игнорировать значение, потому что мой целевой тип имеет public int Value { get; set; }

У нас есть такая проблема на большинстве данных с клиентской стороны. В ядре asp.net как нам указать сериализатору json использовать свойство, соответствующее типу в цели?

Ура,

1 ответ

К сожалению, это невозможно.

Предполагая, что это JSON:

{ 
   "Value": 3, 
   "Name": "Test", 
   "value": "irrelevant" 
}

И этот класс:

public class MyClass
{
    public string Value { get; set; }  
    public string Name { get; set; }         
}

JSON.NET будет десериализоваться следующим образом:

  1. Value = 3
  2. Name = "Test"
  3. Value = "irrelevant"

У десериализатора нет "состояния", поэтому ему все равно, Value ранее был десериализован; он просто присваивает свойства по ходу дела.

Причина, по которой вы получаете ошибку, в том, что ваш класс определяет Value как int, Это приводит к выполнению десериализатора:

  1. Value = 3
  2. Name = "Test"
  3. Value = "irrelevant" <--- выбросить исключение, потому что int не может быть установлен в string значение.
Другие вопросы по тегам