Ios 如何使用curl发布JSON数据并在RoR中使用它?
我正在构建一个iOS应用程序,它需要发布到RoR API 要测试POST,我运行以下命令: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>)>
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}]}}