[英]Read JSON array ruby on rails
我从另一个应用程序获得了一个 JSON 数组,它看起来像这样(来自日志)
Parameters: {"auth_token"=>[{"auth_token"=>"d11D1E3v7pKkLW4wDj8ohgtf"}]}
这个数组会更大(这就是使用数组的原因)但我只是测试我是否可以从中获取内容。 这是我的功能:
def valid_request_array
data = ActiveSupport::JSON.decode(params)[:auth_token]
Usuario.find_by_auth_token(data[0]['auth_token']).present?
end
我收到以下错误:
TypeError(没有将 ActionController::Parameters 隐式转换为 String):app/controllers/api/actas_controller.rb:35:in `valid_request_array'
第 35 行是data = ActiveSupport::JSON.decode(params)[:auth_token]
我有 rails 4.2,也尝试过JSON.parse(params)
和JSON.parse(params[:auth_token])
但它不起作用。 这里有一个类似的问题JSON Array parsing in ROR但我需要读取值以验证该请求。 任何帮助表示赞赏
由于这是Params
,您不需要解码或解析它。 如果您正在操作的是一个jasonfied (or stringified)
对象,您将只需要这个。 例如是这样的:
"{\"auth_token\":[{\"auth_token\":\"d11D1E3v7pKkLW4wDj8ohgtf\"}]}"
然后您可以解析它以获取您的哈希对象。
在这种情况下,您不需要这样做,因为对象不是stringified
。 这就是您遇到该错误的原因:
no implicit conversion of ActionController::Parameters into String
但是,要获取令牌,只需直接将其调用为:
params["auth_token"].first["auth_token"]
这应该d11D1E3v7pKkLW4wDj8ohgtf
为您返回令牌d11D1E3v7pKkLW4wDj8ohgtf
。
您收到此错误是因为 params 不是字符串,而decode
需要一个字符串。 您获得的params
不是 JSON 格式。 尝试:
def valid_request_array
Usuario.find_by_auth_token(params[:auth_token][0]["auth_token"]).present?
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.