Пропустить Nullable int при анализе ответа Json на объект C #

#c# #.net #nullable #jsonconvert

#c# #.net #nullable #jsonconvert

Вопрос:

я анализирую ответ json на объект c #

Моя модель

 public class OutstandingPrompts
{
    public int? PatientID { get; set; }
    public int? AlertTypeID { get; set; }
    public int? PatientAlertID { get; set; }
    public int? PriorityID { get; set; }
    public string PriorityColor { get; set; }
    public string Priority { get; set; }
    public string AlertType { get; set; }
    public DateTime? RecallDate { get; set; }
    public string ForSmoking { get; set; }
    public string Note { get; set; }
    public string AlertValue { get; set; }
    public string AlertGroup { get; set; }
    public DateTime? EXPIRYDATE { get; set; }
    public string FullName { get; set; }
    public string ProviderName { get; set; }
    public int? AlertCategory { get; set; }
    public int? IsConfidential { get; set; }
    public int? ConfidentialViewLogID { get; set; }
    public int? Completed { get; set; }
    public int? TotalRecords { get; set; }
}
  

и вот как я его конвертирую

 List<OutstandingPrompts> b = xs.Value.ElementAt(0).ElementAt(0).ToObject<List<OutstandingPrompts>>();
  

и это работает нормально, потому что я установил тип int в своей модели как nullable int? поскольку существует вероятность нулевых значений для типа int

теперь, о чем я думаю, есть ли способ проанализировать json, не устанавливая мой тип int как nullable . один из известных мне способов — перебирать результат при проверке, если он равен нулю, а затем не присваивать значение, но есть ли другой способ без написания собственной логики ??

Комментарии:

1. Если ваши int свойства не обнуляются, они будут десериализованы до 0. Это то, чего вы хотите?

2. Использование NullValueHandling , например [JsonPropertyAttribute("myInt", NullValueHandling = NullValueHandling.Ignore)] public int? MyInt { get; set; } , будет достаточно для сериализации. Но Int не может быть null . Любой встроенный целочисленный числовой тип будет иметь значение 0 в качестве значения по умолчанию.

3. Что вы ожидаете в качестве значения для отсутствующего свойства int после десериализации?

4. @mr.coffee да, ровно 0 или, может быть, -1

5. @DragAndDrop, если оно равно нулю 0 или -1