【发布时间】:2018-06-23 00:51:16
【问题描述】:
我是 Ruby 的新手,现在已经被困了一段时间了。我收到如下所述的 JSON 响应,旨在搜索其子字符串的值是我指定的值的子字符串。
例如,我收到以下响应:
{
"00:00:00:CC:00:CC": {
"family": "lladdr"
},
"10.0.0.20": {
"family": "inet",
"prefixlen": "24",
"netmask": "255.255.255.0",
"broadcast": "10.0.0.255",
"scope": "Global"
},
"ff00::f00:00ff:fff0:00f0": {
"family": "inet6",
"prefixlen": "64",
"scope": "Link",
"tags": []
}
}
我需要获取键family 的值等于inet 的父项的值。在这种情况下,我只希望 10.0.0.20 在 family 等于 inet 时作为输出。
我在这里遇到了多个问题,但 Google 没有提供帮助。我知道我需要使用 JSON.parse 解析 JSON,然后使用可能的 find 或 select 来获得我的答案,但我无法让它工作。
我不确定是否有任何其他方法可以做到这一点,就像你在 Bash 中使用 grep 或 awk 所做的那样。一种技巧可能是使用foo.[46..54] 之类的东西来输出IP,但我再次相信这是解决这个问题的不好方法。
【问题讨论】:
-
我认为这是一个合理的问题,因为以这种方式搜索嵌套的键/值对并不简单。这个问题或许可以改进,但我认为这是一个值得提出的问题。
标签: json ruby hash ip-address ipv4