Я хочу создать конечную точку, которая получает данные JSON и должна анализировать их как массив строк.
POST /
{
"keys": ["foo", "bar"]
}
У меня проблемы с системой типов. Это то, что я пытался (.as(Array(String))
), но он не компилируется:
require "kemal"
def print_keys(keys : Array(String))
puts "Got keys: #{keys}"
end
post "/" do |env|
keys = env.params.json["keys"].as(Array(String)) # <-- ERROR
print_keys(keys)
end
Kemal.run
Сообщение об ошибке:
8 | keys = env.params.json["keys"].as(Array(String)) # <-- ERROR
^
Error: can't cast (Array(JSON::Any) | Bool | Float64 | Hash(String, JSON::Any) | Int64 | String | Nil) to Array(String)
Если я изменяю код для анализа не Array(String)
но вместо String
он компилируется без проблем. Почему в методе .as
имеет значение то, что типом является Array(String)
вместо String
?
Как можно изменить код для анализа массивов строк?