我想发布到第三方API(基于node.js和couchDB) 已经有一个正常运行的PHP应用程序已成功发布到此API,但我们正在使用rails上的ruby,我正在尝试连接测试站点。
在我没有创建的PHP应用程序中,他们使用cURL并将POSTVARS设置为一个看似用javascript点表示法的编码变量。
我正在使用HTTParty,所以当我获取我的帖子数据并将其转换为JSON并提交时,这是不行的,因为使用HTTParty,post vars必须是哈希。
当我发送帖子数据而不对其进行编码时,我收到格式错误的JSON错误。
是否有一种简单的方法可以将多维哈希转换为键值对数组,其中键是该值的JSON点表示法?
我看过这些文章的解决方案,但我对ruby和rails很新,所以我还没有取得多大进展。
http://www.goodercode.com/wp/convert-your-hash-keys-to-object-properties-in-ruby/
这是一篇很棒的文章,但我不确定你是如何实现该代码的。我把它放在/ lib目录下的hashify.rb文件中并重新启动,但它似乎根本不起作用。
我也尝试写过这样的课程:
class Hashify
def initialize(hash)
hash.each do |k, v|
k=k.gsub(/\.|\s|-|\/|\'/, '_').downcase.to_sym
self.instance_variable_set("@#{k}", v) ## create and initialize an instance variable for this key/value pair
self.class.send(:define_method, k, proc { self.instance_variable_get("@#{k}") }) ## create the getter that returns the instance variable
self.class.send(:define_method, "#{k}=", proc { |v| self.instance_variable_set("@#{k}", v) }) ## create the setter that sets the instance variable
end
end
end
我需要它递归。
答案 0 :(得分:2)
我不太确定你的真正问题是什么,但是Rails提供了一种非常简单的方法来将hash转换为params,但它可能不适合你的问题。
>> {:a => {:b => :c}}.to_param
=> "a%5Bb%5D=c"
答案 1 :(得分:1)