#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