【发布时间】:2011-12-13 23:12:07
【问题描述】:
我正在尝试发布到这个第三方 API(基于 node.js 和 couchDB) 已经有一个正常运行的 PHP 应用程序成功发布到此 API,但我们正在将 ruby 移到 Rails 上,我正在尝试连接一个测试站点。
在我没有创建的 PHP 应用程序中,他们使用 cURL 并将 POSTVARS 设置为似乎采用 javascript 点表示法的编码变量。
我正在使用 HTTParty,所以当我获取我的帖子数据并将其转换为 JSON 并提交时,这是不行的,因为使用 HTTParty,帖子变量必须是哈希。
当我发送未编码的帖子数据时,我收到格式错误的 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
我需要它是递归的。
【问题讨论】:
标签: ruby-on-rails ruby json hash