2013-04-14 51 views
2

我的ExtJS前端發出這樣的PARAM哈希到我的西納特拉後端:如何從params數組中檢索Ruby/Sinatra params?

{"_dc"=>"1365959782607", "page"=>"6", "start"=>"250", "limit"=>"50", "sort"=>"[{\"property\":\"port\",\"direction\":\"ASC\"}]"} 

如何獲得PARAMS「財產」和「方向」?

回答

0

你能做到這一點的方式如下:

require 'json' 
a = {"_dc"=>"1365959782607", "page"=>"6", "start"=>"250", "limit"=>"50", "sort"=>"[{\"property\":\"port\",\"direction\":\"ASC\"}]"} 

sort = JSON.parse a["sort"] 
p sort[0]["property"] # "port" 
p sort[0]["direction"] # "ASC" 
0

你的問題無關西納特拉,它是如何從一個哈希提取值和處理JSON一個基本的問題:

require 'json' 
hash = {"_dc"=>"1365959782607", "page"=>"6", "start"=>"250", "limit"=>"50", "sort"=>"[{\"property\":\"port\",\"direction\":\"ASC\"}]"} 

JSON[hash['sort']].first.values_at('property', 'direction') 
=> ["port", "ASC"] 

使用JSON[hash['sort']]解析序列化對象將返回包含單個散列的數組。 first將返回該散列。在這一點上,這只是通常的方法來獲得價值。我用values_at將它們作爲數組返回。

通過JSON[]一個字符串和JSON將嘗試解析它,期待一個JSON編碼的對象。通過JSON[]另一個對象,如數組或哈希,JSON會將其編碼爲其序列化格式。