title: How to handle JSON deserialization?
body: <p>I have a class OrderRequestModel with 10 properties.</p>
  
  <p>I would like to throw exception if any of the properties is null but do not want to do 10 if checks.</p>
  
  <p>How can i do this smartly?</p>
  
  <pre><code>        if (model is DeliveryRequestModel)
          {
              if (model.Items == null || !model.Items.Any())
              {
                  throw (new ArgumentException("За доставка трябва да има поне един артикул!"));
              }
  
              if ((model as DeliveryRequestModel).DocumentType_Id != 1 &amp; (model as DeliveryRequestModel).DocumentType_Id != 5)
              {
                  errors.Add(new ArgumentException("Доставката може да бъде само от тип фактура или стокова разписка. Фактурата е документ от тип 1, а стоковата разписка е документ от тип 5"));
              }
          }
  
          if (model is SaleRequestModel)
          {
              if (!model.Items.Any())
              {
                  errors.Add(new ArgumentNullException("За продажба трябва да има поне един артикул!"));
              }
          }
  
          if (model.PaymentMode_Id != 1 &amp; model.PaymentMode_Id != 2)
          {
               errors.Add(new ArgumentException("Не съществува такъв начин на плащане. Моля подайте начин за плащане 1 за в брой или 2 за банков превод"));
          }
  
          if (model.VatRate_Id != 1 &amp; model.VatRate_Id != 2)
          {
              errors.Add(new ArgumentException("Не съществува такава данъчна ставка. Моля избере 1 за без ДДС или опция 2 за ДДС"));
          }
          else
          {
  
              var vatRate = await db.VatRates.AsNoTracking().FirstAsync(r =&gt; r.Id == model.VatRate_Id);
  
              foreach (var item in model.Items)
              {
  
                  item.VatBase = item.Quantity * (item.UnitPrice - item.Discount);
                  item.Vat = item.VatBase * vatRate.Amount / 100;
                  item.Total = item.VatBase + item.Vat;
              }
          }
  
          if (model.Currency_Code != "BGN" &amp; model.Currency_Code != "EUR")
          {
              errors.Add(new ArgumentException("Не съшествува такува валута. Моля изберете BGN за левове или EUR за евро"));
          }
  
          var codes = model.Items.Select(i =&gt; i.Goods_Code).Distinct();
          var goodsNotFound = codes.Where(c =&gt; !db.Goods.Any(g =&gt; g.Code == c)).ToList();
          if (goodsNotFound.Any())
          {
              errors.Add(new ArgumentException($"Продукт(и) с кодове {string.Join(", ", goodsNotFound)} не съществуват."));
          }
  
          if (model.Items.Any(i =&gt; i.Quantity &lt;= 0))
          {
              errors.Add(new ArgumentException("Продажбите трябва да имат поне един артикул!"));
          }
  
          if (model.Items.Any(i =&gt; i.UnitPrice &lt;= 0))
          {
              errors.Add(new ArgumentException("Цената на артикула трябва да е по-голяма от 0!"));
          }
  
          if (model.Items.Any(i =&gt; i.Discount &lt; 0))
          {
              errors.Add(new ArgumentException("Продуктите не могат да имат отрицателна отстъпка!"));
          }
  
          if (model.Items.Any(i =&gt; i.UnitPrice &lt;= i.Discount))
          {
              errors.Add(new ArgumentException("Продуктите не могат да имат отстъпка по-голяма или равна на цената на артикула!"));
          }
  
          var company = await db.Companies.FirstOrDefaultAsync(c =&gt; c.UIC == model.UIC);
  
          if (company == null)
          {
              errors.Add(new ArgumentException("Не съществува компания с такъв ЕИК"));
          }
  
          if (errors.Any())
          {
              throw new ArgumentException(string.Join("; ", errors).Replace("System.ArgumentException: ", ""));
          }
  
          return company.Id;
      }
  </code></pre>
  
  <p>All those models properties I have to check them if they are null, so when the user send a JSON and one of the object he specified is null, to throw a message different from:</p>
  
  <pre><code>            "Error converting value {null} to type 'System.Int32'. Path 'DocumentType_Id', line 2, position 24."
  </code></pre>
  
  <p>Which is the error I get from Postman.</p>