在红宝石中转换哈希时忽略 =>?如何正确转换哈希?



我正在发送一个帖子请求,这是有效负载:

data = {updates: [{action: "create", user_id: "2", type: "view"}]}

但是当我发送它时,API 说它期待:

{ action: "create", user_id: "id", type: "type" }

但它得到:

{:action=u003e\"create\", :user_id=u003e2\"2\", :type=u003e\"view\"}

=> 正在转换。我尝试使用to_json但这对我没有帮助。

如何正确转换?我认为这与嵌套数组/哈希有关,因为所有其他数组/哈希都可以正常工作。

另外,我正在设置我的请求正文并像这样发送:

request.set_form_data(body)
https.request(request)

看起来我需要使用此语法才能传递set_form_data嵌套哈希:

{'a[b]': 'c'}{'a' => {'b' => 'c'}}相同

但是有没有办法包含数组?我需要有:

data = {updates: [{action: "create", user_id: "2", type: "view"}]}

在此表示法中。

正如你提到的,set_form_data不接受数组。如果您想继续使用Net::HTTP库,看起来一种解决方法是对数据进行编码并将其传递给request.body

request.body = "updates[][action]=create&updates[][type]=view&updates[][user_id]=2" request.content_type = 'application/x-www-form-urlencoded'

您还可以像这篇文章中那样创建自定义函数:http://cloudlines.tumblr.com/post/653645115/postput-arrays-with-ruby-nethttp-setformdata

看看这篇关于将复杂对象更改为查询字符串的文章:https://coderwall.com/p/uh8kiw/pass-arrays-objects-via-querystring-the-rack-rails-way。

希望对您有所帮助!

最新更新