2012-01-17 66 views
0

我如何解析卡桑德拉的json樣式結果? 我正在使用cassandra-cql gem for rails,我想解析查詢結果以列出所有消息。我的查詢如下所示:如何列出Cassandra cql結果?我必須解析JSON嗎?

def self.get_messages uid 
    @@db.execute("SELECT * FROM messages WHERE uid=?", uid) 
end 

如何列出所有消息?我目前的觀點是:

<% json_dec = ActiveSupport::JSON.decode(u.row.to_json) %> 
<% json_dec.each do |f| %> 
    <%= f[1] %><br/> 
<%end%> 

,並返回:

1 
[{"name"=>"uid", "value"=>"1", "timestamp"=>-1}, {"name"=>"1326751801", "value"=>"test content", "timestamp"=>1326751801970000}, {"name"=>"1326754147", "value"=>"some content to test", "timestamp"=>1326754147612000}] 

是否有查詢什麼更好的辦法?別人怎麼解決這個問題?

回答

2

編碼到json和解碼再沒有太大意義。相反,你可以在行對象上調用#to_hash,這會給你一個散列column_name => value。然後,你可以遍歷是:

<% row.to_hash.each do |key, value| %> 
    <p>key: <%= key %>, value: <%= value %></p> 
<%end%> 

它也像你需要改變你的get_message的實現來電fetch

def self.get_messages uid 
    @@db.execute("SELECT * FROM messages WHERE uid=?", uid).fetch 
end 
+0

感謝這就是偉大的! – user934801 2012-01-17 18:56:25