【发布时间】:2012-09-14 23:52:05
【问题描述】:
我正在构建一个 iOS 应用,它需要发布到 RoR API。
为了测试 POST,我正在运行这个命令:
curl -d @/tmp/data localhost:3000/api/ratings
其中 /tmp/data 包含一个哈希数组:
[ { "uid": "gilt_162929239", "rate": 1 } ]
在 Ruby 中,参数如下所示:
[1] pry(#<Api::PromotionRatingsController>)> params
=> {" { \"uid\": \"good_162929239\", \"rate\": 1 } "=>nil,
"format"=>"json",
"action"=>"create",
"controller"=>"api/ratings"}
我如何让 Rails 为我创建哈希数组以迭代每个?
编辑:我发现我缺少标题。
添加到 curl 命令行:
--header "Accept: application/json" --header "Content-type: application/json"
现在,这是我的参数:
[1] pry(#<Api::PromotionRatingsController>)> params
=> {"_json"=>[{"uid"=>"good_162929239", "rate"=>1}],
"format"=>"json",
"action"=>"create",
"controller"=>"api/ratings",
"promotion_rating"=>{"_json"=>[{"uid"=>"good_162929239", "rate"=>1}]}}
还是不对。
【问题讨论】:
-
不是 ruby 开发人员,但通常您会解码该 json 字符串,然后将其转换为本机数据结构。然后,您可以像使用任何其他本机结构一样使用宿主语言的数组/对象/散列/任何操作工具。
-
在 RoR IIRC 中,它应该自动将 JSON 数据转换为本机对象。但这不会发生在我身上。
-
再一次,我偶尔会在 RoR 上工作,所以没有发布这个作为答案。您可以从
params哈希中提取 JSON 字符串,将其分配给一个对象,然后按照本文中的说明使用jsongem 吗? stackoverflow.com/questions/7964282/convert-json-to-ruby-hash.
标签: ios ruby-on-rails json