我想發佈到這個第三方API(基於node.js和couchDB) 已經有一個正在運行的PHP應用程序成功發佈到此API,但我們正在軌道上移動紅寶石,我正在嘗試連接一個測試點。從Ruby on Rails發佈JSON到API
在PHP應用程序中,我沒有創建這些應用程序,它們使用cURL並將POSTVARS設置爲似乎處於javascript點符號的編碼變量。
我使用HTTParty,所以當我把我的發佈數據並將其轉換爲JSON並提交它時,這是一個不行,因爲對於HTTParty,後變量必須是散列。
當我發送沒有對其進行編碼的發佈數據時,出現格式錯誤的JSON錯誤。
是否有一種簡單的方法將多維散列轉換爲鍵值對的數組,其中鍵是該值的JSON點表示法?
我已經看過這些文章的解決方案,但我很新的紅寶石和鐵軌,所以我還沒有取得很大進展。
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
我需要它是遞歸的。
○○○○....這是非常有趣,可能就是我要找的。如果這個工作,我會回來,並將其標記爲已回答。謝謝! – afxjzs 2011-12-14 18:33:43