繁体   English   中英

Ruby on Rails:通过嵌套 API Z0ECD11C1D7A287401DZD148A2A3BB87401DZD148A2F 响应 go 的最佳方式

[英]Ruby on Rails: Best way to go trough a nested API JSON Response

我正在尝试从更大/嵌套的 API JSON 响应中获取特定数据。 但是因为它是高度动态的,所以它经常失败,因为 JSON 树中缺少一些分支。

有没有一种好方法或一些最佳实践来获取数据?

例子:

@myrecords.cvss31 = jsonresponse["result"]["CVE_Items"][0]["impact"]["baseMetricV3"]["cvssV3"]["vectorString"]

在这种情况下,有时它会抛出错误,因为“cvssV3”为 nil。 也许将来“baseMetricV3”也可能为零。

因此,我的方法是为每个属性创建 7 个 if 语句。 "如果 jsonresponse["result"].present?...",下一个:"if jsonresponse["result"]["CVE_Items"].present?" 等等。 但这似乎不对。

我也尝试过类似 "..["vectorString"].presence ||= "no NVD CVSS 3.1 Score"" 之类的东西,但是因为缺少 "vectorString" 之前的属性,这似乎也不起作用。

我还可以从 API 中提取许多其他属性。 所以基本上我必须写数百个条件语句。

如果我不想从提取的 JSON 响应中获取所有数据,是否有更好的方法?

把它放在这里给任何在这个问题上绊脚石的人。 通过使用挖掘:

jsonresponse.dig("result", "CVE_Items", 0, "impact", "baseMetricV3", "cvssV3", "vectorString").presence || "no NVD CVSS 3.1 Score"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM