Десериализованный JSON со значениями NULL в выходной буфер C#

Я пытаюсь вернуть набор данных JSON, который выглядит следующим образом. Позвольте мне оговориться, сказав, что я ограничен Visual Studio 2010 и .NET 4.0. как вывести NULL или преобразовать в пустой?

  "Application": {
  "AppID": 3119385,
  "ReportID": 4171130,
  "AppReference": "Doran 23-Nov-16 10:46:59AM",
  "CreateDT": "2016-11-23 10:48:38.5800000",
  "ClientName": "GoGetta Brisbane",
  "StoreName": "Brokers",
  "Email": "",
  "StoreCode": "GGT08",
  "AppShortReference": "02",
  "ClientNameShort": "GGT Bris",
  "StoreNameShort": "GGT08",
  "VerifyEmployer": null,
  "VerifyAmount": null,
  "VerifyFrequency": null,
  "VerifyWeekday": null,
  "LocalityCode": "en_AU",
  "TemplateReportID": 12,
  "daysRange": 90,
  "templateReportName": "Enhanced Income Liabilities Full Report",
  "isReportGraphEnabled": 1,

Я пытаюсь обработать это в выходной буфер компонента скрипта в SSIS. Однако я продолжаю получать сообщение об ошибке «невозможно преобразовать значение null в тип значения», несмотря на его проверку.

  if (String.IsNullOrEmpty(rptContentOutput.Applications.Application.VerifyEmployer) == true)
            {
                ApplicationDetailsBuffer.VerifyEmployer = "";
            }
            else
            {
                ApplicationDetailsBuffer.VerifyEmployer = rptContentOutput.Applications.Application.VerifyEmployer;
            }

Мой класс был определен следующим образом.

public class Application
{
    [JsonProperty("AppID")]
    public int? AppID { get; set; }
    [JsonProperty("ReportID")]
    public int? ReportID { get; set; }
    [JsonProperty("AppReference")]
    public string AppReference { get; set; }
    [JsonProperty("CreateDT")]
    public string CreateDT { get; set; }
    [JsonProperty("ClientName")]
    public string ClientName { get; set; }
    [JsonProperty("StoreName")]
    public string StoreName { get; set; }
    [JsonProperty("Email")]
    public string Email { get; set; }
    [JsonProperty("StoreCode")]
    public string StoreCode { get; set; }
    [JsonProperty("AppShortReference")]
    public string AppShortReference { get; set; }
    [JsonProperty("ClientNameShort")]
    public string ClientNameShort { get; set; }
    [JsonProperty("StoreNameShort")]
    public string StoreNameShort { get; set; }
    [JsonProperty("VerifyEmployer")]
    public string VerifyEmployer { get; set; }
    [JsonProperty("VerifyAmount")]
    public double VerifyAmount { get; set; }
    [JsonProperty("VerifyFrequency")]
    public string VerifyFrequency { get; set; }
    [JsonProperty("VerifyWeekday")]
    public string VerifyWeekday { get; set; }
    [JsonProperty("LocalityCode")]
    public string LocalityCode { get; set; }
    [JsonProperty("TemplateReportID")]
    public int? TemplateReportID { get; set; }
    [JsonProperty("daysRange")]
    public int? daysRange { get; set; }
    [JsonProperty("templateReportName")]
    public string templateReportName { get; set; }
    [JsonProperty("isReportGraphEnabled")]
    public string isReportGraphEnabled { get; set; }

}


person Lucas Perrett    schedule 31.05.2017    source источник
comment
Вы не указываете, что такое VerifyFrequency - это классы или структуры?   -  person LB2    schedule 31.05.2017
comment
@ LB2, что ты имеешь в виду. Я пока не вывожу это, потому что могу получить первое значение.   -  person Lucas Perrett    schedule 31.05.2017
comment
Возможно, я неправильно понял вопрос: вы пытаетесь сериализовать в JSON или десериализовать из JSON?   -  person LB2    schedule 31.05.2017
comment
Какой тип для ApplicationDetailsBuffer.VerifyEmployer. Пожалуйста, покажите код   -  person CodingYoshi    schedule 31.05.2017
comment
@ LB2 Я десериализую из JSON в выходной буфер.   -  person Lucas Perrett    schedule 31.05.2017
comment
Поэтому, если вы выполняете десериализацию в свою модель Application, важно понимать, что такое VerifyFrequency (и тому подобное). Если это структуры, то проблема ясна - они не объявлены Nullable<T>. Если нет, то это что-то другое.   -  person LB2    schedule 31.05.2017
comment
Кроме того, неясно, о чем этот фрагмент кода или в каком контексте он находится. Можете ли вы показать больше контекста?   -  person LB2    schedule 31.05.2017
comment
@CodingYoshi это строка, определенная в моем классе. ApplicationDetailBuffer — это вывод для моего пакета SSIS, который также определяется как строка.   -  person Lucas Perrett    schedule 31.05.2017
comment
Извините за вводящие в заблуждение комментарии - почему-то я не увидел тип string и подумал, что VerifyEmployer это тип, а не имя свойства.   -  person LB2    schedule 31.05.2017


Ответы (1)


Хорошо, я неправильно прочитал код с предыдущими комментариями, но теперь я его вижу.

Проблема в следующем:

public double VerifyAmount { get; set; }

который является типом значения, а JSON содержит:

"VerifyAmount": null,

что вызывает ошибку. Исправление:

public double? VerifyAmount { get; set; }
person LB2    schedule 31.05.2017
comment
БЛАГОДАРЮ ВАС!!!! Я смотрел на это часами, но явно сосредоточился на неправильном конце уравнения. Я думал, потому что я не выводил его, что он не использовался. - person Lucas Perrett; 31.05.2017