Десериализовать нулевое свойство по умолчанию ⇐ C#

Место общения программистов C#
Anonymous
Десериализовать нулевое свойство по умолчанию

Сообщение Anonymous »

Имея такой json:

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

[{"Familiy":"A","Article":null}, {"Familiy":"B","Article":"plant"}]
Я пытаюсь десериализовать его в ObservableCollection< ArticleModel >, являющийся ArticleModel следующим классом:

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

public class ArticleModel
{
public String Familiy { get; set; }
public String Article { get; set; }
}
Процесс десериализации выполняется следующим образом:

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

var settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
};

ObservableCollection result = JsonConvert.DeserializeObject(jsonString, settings);
Проблема иногда заключается в том, что Статья получает значение null из внешнего WS, что впоследствии приводит к сбою некоторых привязок пользовательского интерфейса. Я хотел бы автоматически установить для Article строку по умолчанию, если она будет равна нулю из WS.
До сих пор я пробовал следующие подходы:
  • Укажите значение по умолчанию для свойства Article, используя [DefaultValue("")], и игнорируйте нулевые значения, используя JsonSerializerSettings< /strong>
  • Не указывать значение по умолчанию для свойства Article, но предоставить конструктор по умолчанию для ArticleModel и игнорировать нулевые значения с помощью JsonSerializerSettings
Результат тот же. Artcile имеет значение null.
Я также попробовал этот ответ, который подразумевает использование System.Text.Json вместо Newtonsoft, с тем же результатом, что и раньше.

Подробнее здесь: https://stackoverflow.com/questions/791 ... as-default

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