У меня есть json, который я десериализую
public class Item
{
public int bot { get; set; }
public Item1[] items { get; set; }
public string name { get; set; }
public float price { get; set; }
}
Все десериализуется отлично, однако есть такие случаи, когда поля price нет.
NewtonsoftJson автоматом присваивает ему значение 0. Как сделать чтобы он туда записывал значение по умолчанию. Т.е. если поля нет - то ставим значение 0.
NewtonsoftJson не ставит ему автоматом 0. Это при создании объекта значение свойства price задается 0 по дефолту. Если хотите задать дефолтное значение для создаваемого объекта, сделайте это в конструкторе этого объекта.
public class Item
{
public int bot { get; set; } // int - 0 по дефолту
public Item1[] items { get; set; } // [] - null по дефолту
public string name { get; set; } // string - null по дефолту
public float price { get; set; } // float - 0 по дефолту (изменяем в конструкторе)
public Item()
{
price = 99999; // задали другое значение
}
}
Как верно заметил @Андрей, начиная с C# 6.0 можно писать так:
public float price { get; set; } = 99999;
В итоге такая запись развернется в конструкцию с конструктором при компиляции.
Пример!
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники