使用 json.dig Ruby 获取不带 [] 的单个值

Get single value without [] with json.dig Ruby

所以我有这段代码可以从 json:

中获取值
json.dig(0,'prediction','day','0','temperature')

我得到这个输出:

{"value" => "5", "period"=>"03"}

这是 json 文件:

[{"origen"=>                                                  
    {"productor"=>"Agencia Estatal de Meteorología - AEMET. Gobierno de España",
     "web"=>"https://www.aemet.es",                              "enlace"=>"https://www.aemet.es/es/eltiempo/prediccion/municipios/horas/lagran-id01030",
     "language"=>"es",                                         
     "copyright"=>"© AEMET. Autorizado el uso de la información y su reproducción citando a AEMET como autora de la misma.",
     "notaLegal"=>"https://www.aemet.es/es/nota_legal"},         
   "elaborado"=>"2022-03-30T22:43:40",                         
   "nombre"=>"Lagrán",                                         
   "provincia"=>"Araba/Álava",
   "prediccion"=>
    {"dia"=>
      [{"estadoCielo"=>
         [{"value"=>"16", "periodo"=>"20", "descripcion"=>"Cubierto"},
          {"value"=>"16n", "periodo"=>"21", "descripcion"=>"Cubierto"},
          {"value"=>"82n", "periodo"=>"22", "descripcion"=>"Bruma"},
          {"value"=>"16n", "periodo"=>"23", "descripcion"=>"Cubierto"}],
        "precipitacion"=>[{"value"=>"0", "periodo"=>"20"}, {"value"=>"0", "periodo"=>"21"}, {"value"=>"0", "periodo"=>"22"}, {"value"=>"Ip", "periodo"=>"23"}],
        "probPrecipitacion"=>[{"value"=>"5", "periodo"=>"2002"}],
        "probTormenta"=>[{"value"=>"5", "periodo"=>"2002"}],
        "nieve"=>[{"value"=>"0", "periodo"=>"20"}, {"value"=>"0", "periodo"=>"21"}, {"value"=>"0", "periodo"=>"22"}, {"value"=>"0", "periodo"=>"23"}],
        "probNieve"=>[{"value"=>"0", "periodo"=>"2002"}],
     "temperatura"=>[{"value"=>"7", "periodo"=>"21"}, {"value"=>"6", "periodo"=>"22"}, {"value"=>"6", "periodo"=>"23"}],      
        "sensTermica"=>[{"value"=>"4", "periodo"=>"21"}, {"value"=>"2", "periodo"=>"22"}, {"value"=>"3", "periodo"=>"23"}],     
        "humedadRelativa"=>[{"value"=>"81", "periodo"=>"21"}, {"value"=>"84", "periodo"=>"22"}, {"value"=>"87", "periodo"=>"23"}]
        "vientoAndRachaMax"=>
         [{"direccion"=>["N"], "velocidad"=>["15"], "periodo"=>"21"},
          {"value"=>"45", "periodo"=>"21"},
          {"direccion"=>["NO"], "velocidad"=>["19"], "periodo"=>"22"},
          {"value"=>"39", "periodo"=>"22"},
          {"direccion"=>["N"], "velocidad"=>["15"], "periodo"=>"23"},
          {"value"=>"44", "periodo"=>"23"}],

        "fecha"=>"2022-03-30T00:00:00",

        "orto"=>"07:56",
        "ocaso"=>"20:34"},

而希望的输出只是来自 value

5

可以在不删除字符和不弄脏代码的情况下做到吗?

谢谢!

你想要的输出应该来自:

json.dig(0,'prediction','day','0','temperature').map{|e|e['value'].to_i}

希望对您有所帮助。