【问题标题】:Checking whether a JSON object exists or not [duplicate]检查 JSON 对象是否存在 [重复]
【发布时间】:2022-01-16 13:37:12
【问题描述】:

我有一个我正在尝试反序列化的 JSON 文档。该文档可能会根据某些产品的可用信息而更改。因此,如果有一个产品没有可下载的文件,就会丢失 JSON 对象,我需要知道我是否返回 null。到目前为止,如果我的应用程序为 null 并且我不知道如何修复它,我的应用程序将会崩溃。

using (WebClient wc = new WebClient())
{
    wc.Headers.Add("User-Agent", "C# Windows Application");
    String jsonData = wc.DownloadString(URL);

    EfobasenRoot EfobasenDeserialized = JsonConvert.DeserializeObject<EfobasenRoot>(jsonData);
                
    // EL Nr
    elNummer = EfobasenDeserialized.Produktskjema.Produktnr;
                
    // Varetekst
    vareTekst = EfobasenDeserialized.Produktinfo.Varetekst;
                
    // Fabrikat
    fabrikat = EfobasenDeserialized.Produktinfo.Fabrikat;

    // FDV Download ID
    // Due to syntax in the Json file, I take the last bbject and save it to a string
    // So we can deserialize it again to get the fileID for the FDV file
    jsonFDV = EfobasenDeserialized.Produktskjema.Skjema.Grupper[2].Felter[0].Verdi.ToString();
    EfobasenFDV EfobasenFDVDeserialized = JsonConvert.DeserializeObject<EfobasenFDV>(jsonFDV);
    fdvNummer = Convert.ToInt32(EfobasenFDVDeserialized.FilId);

    // Download the FDV file from URL
    var saveFile = new SaveFileDialog();
    saveFile.FileName = fabrikat + "-" + vareTekst + "-" + elNummer + "-FDV";
    saveFile.Filter = "PDF document (*.pdf)|*.pdf";

    var result = saveFile.ShowDialog();

    if (result == DialogResult.OK)
    {
        wc.DownloadFile(fdvDownloadPath + fdvNummer, saveFile.FileName);
    }
}

在这段代码中,我需要检查“jsonFDV”是否为空。如果它现在返回 null 它会崩溃,我不知道如何验证它。

【问题讨论】:

  • if (jsonFDV != null) { .. //not null } else { // it is null }
  • 不起作用。因为我试图访问一个不存在的对象,结果是 null。
  • 是在以jsonFDV = EfobasenDeserialized.Pr 开头的行还是以EfobasenFDV EfobasenFDVDeserialized = JsonC 开头的行抛出异常?
  • 是的,这是错误。,
  • System.NullReferenceException: '对象引用未设置为对象的实例。' Efobasen_AutoFDV.Felter.Verdi.get 返回 null。

标签: c# json


【解决方案1】:

使用空值检查,我建议Null-Conditional Operator

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 2014-08-22
    • 1970-01-01
    • 2018-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    相关资源
    最近更新 更多