从字符串数据结构中提取嵌套键

时间:2013-08-11 16:56:17

标签: ruby

我使用mailgun发送电子邮件。它有api添加“取消订阅我”功能。我在我的rails应用程序中使用它。

使用此命令,我获得所有未订阅用户的列表,即unsubscribes mailgun表中的​​条目。

 RestClient.get "https://api:key-3ax6xnjp29jd6fds4gc373sgvjxteol0"  "@api.mailgun.net/v2/samples.mailgun.org/unsubscribes"

我将其输出存储在@unsubscriber中。所以我的控制器有:

  @unsubscribers = RestClient.get "https://api:key-3ax6xnjp29jd6fds4gc373sgvjxteol0"  "@api.mailgun.net/v2/samples.mailgun.org/unsubscribes"

当我在视图中显示输出时,<%= @unsubscribers%>我得到字符串:

{
  "total_count": 1,
  "items": [{
    "created_at": "Sun, 11 Aug 2013 08:07:22 GMT",
    "tag": "*",
    "id": "sdfsdfw12423535456",
    "address": "xyz@abc.com"
  }]
}

由于我想从我的数据库中删除未订阅的电子邮件,我只想在@unsubscribers中发送电子邮件。但它包含整个字符串。

我没有得到如何从上面的字符串中提取电子邮件,以便我可以在@unsubscribers中找到电子邮件列表,我可以从我的应用程序中删除它们。

有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

如果您尝试访问第一个订户的地址:

@unsubscriber['items'].first['address']

更安全的代码:

((@unsubscriber['items'] || []).first || {} )['address']

如果您要收集所有地址:

(@unsubscriber['items'] || []).map{|s| ['address']}

答案 1 :(得分:-1)

@unsubscriber是一个哈希值。 items是一个哈希数组。您需要使用[0]获取第一个项目。然后你需要address

@unsubscriber["items"][0]["address"]