【问题标题】:Read JSON object properties that may not be defined读取可能未定义的 JSON 对象属性
【发布时间】:2016-05-24 07:51:41
【问题描述】:

好的,我正在编写一个从网站 html 源代码收集数据的 Windows 窗体应用程序。

它需要获取人的性别,但有些人没有设置性别,所以源代码中没有显示性别,所以它给我一个错误。

我想要做的是,如果源代码不包含“性别”,那么Console.Write = "N/A"

这是我目前拥有/正在用来捕获性别数据的代码。

JObject ob = JObject.Parse(html);
ob = JObject.Parse(html);
Console.WriteLine(html);
gt.gender = (string)ob["data"]["user"]["gender"];
Console.WriteLine(gt.gender);

我对此还是有点陌生​​,所以我想知道是否有某种 if 或 else 语句我可以在那里使用,所以如果源代码不包含,它不会在我的应用程序中引发错误“性别”。

非常感谢。

【问题讨论】:

  • 哪个控制台? “我正在编写一个 Windows 窗体应用程序”
  • Console.WriteLine 只是将数据添加到列表视图中。这是一个窗体应用程序。
  • 阅读this answer我给了另一个问题。一切都会清楚。
  • 如果我是正确的,您的答案仅适用于源代码中有多个实例的情况,但这不是我想要做的。我正在抓取 m 或 f 的数据“性别”,但有时这不会显示并引发错误,所以如果它不显示任何性别,我希望它做的是改为写“N/A”,跨度>
  • 您可能正在寻找一个字典类,如果没有找到给定的键,它将返回一个默认值。查看this问题的答案以获取示例。

标签: c# html json.net capture


【解决方案1】:

您可以按如下方式测试JObject 上的属性:

JObject item = //your JObject;
var hasFooProp = item.Properties().Any(p => p.Name == "foo");
if(hasFooProp)
{
    //item["foo"] is safe to read
}
else
{
    //set your N/A
}

【讨论】:

    猜你喜欢
    • 2020-08-06
    • 2018-02-04
    • 2012-08-26
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 2011-07-18
    • 2019-11-13
    • 2023-04-01
    相关资源
    最近更新 更多