2011-12-13 253 views
0

我想發佈到這個第三方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 

From here

我需要它是遞歸的。

回答

2

我不太清楚你真正的問題是什麼,但Rails提供了一種非常簡單的方法將散列轉換爲params,但它可能不適合你的問題。

>> {:a => {:b => :c}}.to_param 
=> "a%5Bb%5D=c" 
1

「Jbuilder爲您提供了一個簡單的DSL來聲明JSON結構,該JSON結構可以擊敗巨型散列結構。」

這可能是你在找什麼:

https://github.com/rails/jbuilder

+0

○○○○....這是非常有趣,可能就是我要找的。如果這個工作,我會回來,並將其標記爲已回答。謝謝! – afxjzs 2011-12-14 18:33:43