Ios 如何使用curl发布JSON数据并在RoR中使用它?

Ios 如何使用curl发布JSON数据并在RoR中使用它?,ios,ruby-on-rails,json,Ios,Ruby On Rails,Json,我正在构建一个iOS应用程序,它需要发布到RoR API 要测试POST,我运行以下命令: curl -d @/tmp/data localhost:3000/api/ratings 其中/tmp/data包含哈希数组: [ { "uid": "gilt_162929239", "rate": 1 } ] 在Ruby中,params如下所示: [1] pry(#<Api::PromotionRatingsController>)>

我正在构建一个iOS应用程序,它需要发布到RoR API

要测试POST,我运行以下命令:

curl -d @/tmp/data localhost:3000/api/ratings
其中/tmp/data包含哈希数组:

[    {        "uid": "gilt_162929239",        "rate": 1    }   ]
在Ruby中,params如下所示:

[1] pry(#<Api::PromotionRatingsController>)> params
=> {"    {        \"uid\": \"good_162929239\",        \"rate\": 1    }   "=>nil,
 "format"=>"json",
 "action"=>"create",
 "controller"=>"api/ratings"}
现在,这里是我的参数:

[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}]}}
仍然不正确。

根据:

如果已在初始值设定项或中打开config.wrap_参数 在控制器中调用wrap_参数,可以安全地忽略 JSON/XML参数中的根元素。参数将被克隆 并根据默认控制器的名称包装在密钥中

因此,我猜您要么需要包含一个根元素,要么需要设置config.wrap_参数。

根据:

如果已在初始值设定项或中打开config.wrap_参数 在控制器中调用wrap_参数,可以安全地忽略 JSON/XML参数中的根元素。参数将被克隆 并根据默认控制器的名称包装在密钥中


因此,我猜想您要么需要包含根元素,要么需要设置config.wrap_参数。

不是ruby开发人员,但通常您需要解码json字符串,将其转换为本机数据结构。然后使用宿主语言的array/object/hash/任何操作工具,就像使用任何其他本机结构一样。但这并没有发生在我身上。再说一次,我偶尔会研究RoR,所以没有将此作为答案发布。您能否从params散列中提取JSON字符串,将其分配给一个对象,然后使用JSON gem,如本文所述。不是ruby开发人员,但通常您会解码json字符串,将其转换为本机数据结构。然后使用宿主语言的array/object/hash/任何操作工具,就像使用任何其他本机结构一样。但这并没有发生在我身上。再说一次,我偶尔会研究RoR,所以没有将此作为答案发布。您能否从params散列中提取JSON字符串,将其分配给一个对象,然后使用JSON gem,如本文所述。
[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}]}}