diff --git a/spec/param_parser_spec.cr b/spec/param_parser_spec.cr index f41325b..4c1992f 100644 --- a/spec/param_parser_spec.cr +++ b/spec/param_parser_spec.cr @@ -174,7 +174,7 @@ describe "ParamParser" do body_params.to_s.should eq("") json_params = Kemal::ParamParser.new(request).json - json_params.should eq({} of String => Nil | String | Int64 | Float64 | Bool | Hash(String, JSON::Any) | Array(JSON::Any)) + json_params.should eq({} of String => Nil | String | Int64 | Float64 | Bool | Hash(String, JSON::Type) | Array(JSON::Type)) end end diff --git a/spec/route_handler_spec.cr b/spec/route_handler_spec.cr index 8570ba7..f1a53bb 100644 --- a/spec/route_handler_spec.cr +++ b/spec/route_handler_spec.cr @@ -85,6 +85,7 @@ describe "Kemal::RouteHandler" do post "/" do |env| skills = env.params.json["skills"].as(Array) skills_from_languages = skills.map do |skill| + skill = skill.as(Hash) skill["language"] end "Skills #{skills_from_languages.each.join(',')}" diff --git a/src/kemal/param_parser.cr b/src/kemal/param_parser.cr index 188eb4f..e42a87a 100644 --- a/src/kemal/param_parser.cr +++ b/src/kemal/param_parser.cr @@ -8,7 +8,7 @@ module Kemal MULTIPART_FORM = "multipart/form-data" PARTS = %w(url query body json) # :nodoc: - alias AllParamTypes = Nil | String | Int64 | Float64 | Bool | Hash(String, JSON::Any) | Array(JSON::Any) + alias AllParamTypes = Nil | String | Int64 | Float64 | Bool | Hash(String, JSON::Type) | Array(JSON::Type) getter files def initialize(@request : HTTP::Request) @@ -89,7 +89,7 @@ module Kemal case json = JSON.parse(body).raw when Hash json.each do |key, value| - @json[key] = value.raw + @json[key] = value.as(AllParamTypes) end when Array @json["_json"] = json