![](/img/trans.png)
[英]What is the best way to know if a response in JSON is null in Ruby on Rails?
[英]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.