【发布时间】:2010-10-22 08:57:09
【问题描述】:
使用像
这样的普通哈希非常容易{:a => "a", :b => "b"}
这将转化为
"a=a&b=b"
但是你如何处理更复杂的事情,比如
{:a => "a", :b => ["c", "d", "e"]}
应该翻译成
"a=a&b[0]=c&b[1]=d&b[2]=e"
或者更糟糕的是,(做什么)类似:
{:a => "a", :b => [{:c => "c", :d => "d"}, {:e => "e", :f => "f"}]
感谢您对此提供的非常感谢的帮助!
【问题讨论】:
-
听起来您想将 JSON 转换为 HTTP 参数...也许您需要不同的编码?
-
嗯,这实际上不是 Json,而是一个 Ruby 哈希......我不明白为什么编码在这里很重要。
-
lmanners的回答应该推广。这里有很多很棒的自己动手的答案(很多得分很高),但 ActiveSupport 已经为此添加了标准化支持,从而使对话变得毫无意义。不幸的是,lmner 的答案仍然在列表中。
-
@Noach 在我看来,任何说依赖于大量猴子补丁核心类的库的答案都应该被埋没。大量这些补丁的理由充其量是不稳定的(看看Yehuda Katz's comments in this article),这是一个很好的例子。 YMMV,但对我来说,是带有类方法或不打开 Object 和 Hash 的东西,而且作者不会说“不要与我们发生冲突!”会好很多。
标签: ruby http parameters hashmap