2016-11-09 3 views
1

Первый раз, пытаясь использовать Ruby AWS ADK V2, и я пытаюсь отформатировать данные, которые я возвращаю, и кажется, что это трудно сделать в удобном для использования формате.Обработка лучшего ответа от Aws :: Route53 :: Client.new

Все, что я хочу сделать, это получить список размещенных зон и отобразить их в таблице.

У меня есть помощник, который имеет:

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 
} 

На что я бегу действительно, но в то время как оператор взаимодействия всех записей hosted_zone в таблицу.

Это лучший способ получить ответ или вы можете запросить ответ как json уже?

ответ

1

Почему вы конвертируете хэш в JSON, только чтобы преобразовать его в хэш снова? JSON.parse(some_hash.to_json) просто даст вам some_hash.

Это, как говорится, я не думаю, что можно получить JSON непосредственно от AWS, в основном из-за того, что their API responds with XML. Я думаю, что ваше решение идеально подходит, если это все, что вы делаете, но если вы хотите, вы можете сделать запрос с HTTP-клиентом, а затем взять полученный XML и использовать что-то вроде ActiveSupport Hash.from_xml, чтобы создать хэш, который вы можете затем конвертировать в JSON.