2014-03-13 56 views
1

如果我有一個字符串:是否有內置的Ruby方法直接將查詢字符串轉換爲JSON對象?

"TimeStamp=1320947201017&enumber=34646" 

,並希望這是JSON:

{ "TimeStamp" : "1320947201017", "enumber" : "34646" } 

是否有Ruby來完成這個內置的方式嗎?

+0

編輯你的主題爲*查詢字符串直接.. * –

+0

很酷,很棒的主意。只是感謝Arup – Trip

+0

沒有..你做錯了:-) *查詢字符串到Json * ...像這樣.. –

回答

7

做如下:

require 'uri' 
require 'json' 

Hash[URI.decode_www_form("TimeStamp=1320947201017&enumber=34646")].to_json 
# => "{\"TimeStamp\":\"1320947201017\",\"enumber\":\"34646\"}" 

文檔 - decode_www_formGenerating JSON

+2

哇,這真的很有趣。我以前從來沒有見過。謝謝! – Trip

+4

我認爲OP希望它在JSON中,而不是Ruby哈希。 bjhaid的編輯可以做到這一點,但bjhad不應該編輯別人的代碼。大幅改變別人的回答是不合適的。 – sawa

+0

您添加了'to_json',但忘記將哈希輸出更新爲JSON。 –

4

將其轉換爲一個哈希值,那麼哈希轉換成JSON,無論使用Rails的內置方法。

require 'rack/utils' 
#=> [] 
paramstring = "TimeStamp=1320947201017&enumber=34646" 
#=> "TimeStamp=1320947201017&enumber=34646" 
hash = Rack::Utils.parse_nested_query(paramstring) 
#=> {"TimeStamp"=>"1320947201017", "enumber"=>"34646"} 
hash.to_json  
#=> "{\"TimeStamp\":\"1320947201017\",\"enumber\":\"34646\"}" 
+0

哇威廉姆斯,你是一個傳奇!謝謝! – Trip

相關問題