Tengo una aplicación de rieles que obtiene una respuesta de World Weather Online API. Estoy usando la gema rest-client y la respuesta está en formato JSON.Ruby obteniendo datos de API JSON profundamente anidados
que analizar la respuesta usando:
parsed_response = JSON.parse(response)
Dónde parsed_response
es, obviamente, un hash.
Los datos que necesito son cadenas dentro de un hash dentro de un array dentro de un hash dentro de otro array dentro de otro hash dentro de otro hash.
Los valores hash más anidados interiores están dentro de ["hourly"]
, una matriz de 8 valores hash, cada uno con 20 teclas, que poseen valores de cadena de varios parámetros meteorológicos. Cada uno de estos hashes en la matriz es una hora del día diferente (la previsión es de tres horas, 3 * 8 = 24 horas).
Así, por ejemplo, si quiero que la altura del oleaje en metros a las 9 pm, encuentro con la siguiente llamada:
@swell_height = parsed_data["data"]["weather"][0]["hourly"][7]["swellHeight_m"]
donde el elemento 7 de la matriz corresponde a "time" => "2100"
Mientras Definitivamente puedo trabajar con esto, tengo curiosidad sobre si hay un método más directo para acceder a mis datos, como si fuera una tabla de base de datos, podría usar el registro activo, algo así como:
@swell_height = parsed_data.swellHeight_m.where(:time => "2100")
cómo puedo encontrar "seleccionado" de esto - "niños" => [{"id" => "10", "texto" => "Nuevas llegadas", "estado" => {"abierto" = > verdadero, "seleccionado" => falso}} – kpp