忽略=>在ruby中转换哈希值?如何正确转换哈希?

时间:2017-07-17 19:48:43

标签: json ruby http

我发送了一个帖子请求,这是有效载荷:

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"}]}

用这种表示法。

1 个答案:

答案 0 :(得分:0)

正如您所提到的,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

希望有所帮助!