我有一个散列,我发现,与net/http张贴我必须转换成一个平面格式。
例如
invoice = { :no => "100", :date => "08/08/2022", :client => {:name => "Foo" } }
将成为
params = { "invoice[no]" => "100", "invoice[date]" => "08/08/2022", "invoice[client][name]" => "Foo" }
有没有办法自动做到这一点?我试过_param & to_query,flatten和encode_www_form,但他们没有将其转换为所需的格式。
我正在做的post操作是一个Ruby On Rails后端,我使用Devise Tokens进行授权。
res = Net::HTTP.post_form(uri, params)
2条答案
按热度按时间fafcakar1#
你需要
CGI.parse
方法。它将HTTP查询字符串解析为键=>值对的散列不要把单元素数组当作值。它会工作得很好
oxf4rvwz2#
我认为这个片段应该做的工作:
首先,我们让ActiveRecord使用方法
to_query
从散列生成类似查询的结构。我们需要在之后取消转义查询字符串,因为我们不希望在那里有URL编码的输出。然后,我们使用split('&')
按参数拆分字符串,并使用split('=')
将每个参数拆分为键值。最后,我们将输出转换回哈希。