1

第一次尝试使用 Ruby AWS ADK V2,我正在尝试格式化我要返回的数据,而且似乎很难将其转换为可用格式。

我要做的就是获取托管区域列表并显示在表格中。

我有一个助手:

def hosted_zones
  r53 = Aws::Route53::Client.new
    #convert to hash first so we can parse and covert to json
    h = (r53.list_hosted_zones).to_hash
    j = JSON.parse((h.to_json))
end

然后返回以下 JSON:

{
  "hosted_zones": [{
    "id": "/hostedzone/Z1HSDGASSSME",
    "name": "stagephil.com.",
    "caller_reference": "2016-07-12T15:33:45.277646707+01:00",
    "config": {
      "comment": "Private DNS zone for stage",
      "private_zone": true
    },
    "resource_record_set_count": 10
  }, {
    "id": "/hostedzone/ZJDGASSS0ZN3",
    "name": "stagephil.com.",
    "caller_reference": "2016-07-12T15:33:41.290143511+01:00",
    "config": {
      "comment": "Public DNS zone for stage",
      "private_zone": false
    },
    "resource_record_set_count": 7
  }],
  "is_truncated": false,
  "max_items": 100
}

我正在运行一个真正的 while 语句,以通过所有 hosts_zone 条目与表进行交互。

这是获得响应的最佳方式还是您可以请求响应已经是 json?

4

1 回答 1

1

为什么要将散列转换为 JSON,只是为了再次将其转换为散列?JSON.parse(some_hash.to_json)只会给你some_hash

话虽如此,我认为直接从 AWS 获取 JSON 是不可能的,主要是因为他们的 API 使用 XML 响应。我认为如果这就是你所做的一切,你的解决方案是理想的,但如果你愿意,你可以使用 HTTP 客户端发出请求,然后获取你收到的 XML,并使用 ActiveSupport 的Hash.from_xml之类的东西来创建一个哈希然后您可以转换为 JSON。

于 2016-11-10T03:10:26.253 回答