繁体   English   中英

在 Rails 上读取 JSON 数组 ruby

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM