【发布时间】: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。