提问人:Filz 提问时间:5/4/2015 最后编辑:John SaundersFilz 更新时间:5/5/2015 访问量:319
检查响应中是否存在值。eBay API [重复]
Check, if value exists in response. eBay API [duplicate]
问:
我在开发应用程序时遇到问题。 我正在使用 eBay API 获取有关卖家列出的商品的信息。我使用的调用名为“GetSellerList”。
如果项有可用的 FreeAddedCategory,则响应可能包含名为“CategoryID”(FreeAddedCategory.CategoryID) 的值。您会发现像这样的 XML 作为响应:
<ItemArray>
<Item>
<FreeAddedCategory>
<CategoryID>XXXXXXXXX</CategoryID>
</FreeAddedCategory>
</Item>
</ItemArray>
由于此值并不总是返回,因此我收到以下错误消息:
对象引用未设置为对象的实例
我现在想在使用它之前检查此对象是否可用,以防止出现错误。这就是我开始解决问题的方式(但没有成功):
foreach (ItemType item in apiCall.ApiResponse.ItemArray)
{
if (String.IsNullOrWhiteSpace(item.FreeAddedCategory.CategoryID))
{
Console.WriteLine("FreeAdded: Nicht vorhanden!");
}
}
但是,此检查也会带来相同的错误消息。我能做些什么来使代码正常工作?逻辑应该是这样的:
IF item.FreeAddedCategory.CategoryID exist
{
do everything that needs to be done
}
ELSE skip;
答:
0赞
Chuck Savage
5/5/2015
#1
尝试:
XElement root = XElement.Load(file); // .Parse(string);
if (root.Descendants("FreeAddedCategory").Any())
{
// do exists
}
else
{
// doesn't exist
}
或者,如果这对您的情况更有意义,请使用。CategoryId
评论
2赞
Filz
5/5/2015
嘿查克,感谢您的快速回复。我的错误真的很愚蠢!而不是选中“项目。FreeAddedCategory.CategoryID“对于”null“,我只需要检查”item.FreeAddedCategory”。因为“项目。FreeAddedCategory“是”null“,当我尝试访问”item“时,我确实得到了 NullReferenceException。FreeAddedCategory.CategoryID”。
评论
NullReferenceException