0
我正在處理RoR項目,並將JSON對象傳遞給腳本。具體來說,一個jQuery日曆的事件列表。Ruby + JSON + Regexp
首先我從活動記錄必要的事件,並將其轉換成JSON:
@events = CalendarEvent.find(:all, :conditions => ["mentor_id = ?", current_user]).to_json(:only => [:id, :availability, :starts_at, :ends_at])
這將返回以下:
[{"calendar_event":{"starts_at":"2010-08-14T17:15:00Z","id":1,"availability":true,"ends_at":"2010-08-14T17:45:00Z"}},
{"calendar_event":{"starts_at":"2010-08-15T15:45:00Z","id":2,"availability":true,"ends_at":"2010-08-15T16:15:00Z"}},
...]
不過,我遇到了問題,因爲腳本需要格式如下:
[{"starts_at":"2010-08-14T17:15:00Z","id":1,"availability":true,"ends_at":"2010-08-14T17:45:00Z"},
{"starts_at":"2010-08-15T15:45:00Z","id":2,"availability":true,"ends_at":"2010-08-15T16:15:00Z"},
...]
起初我以爲它會是從單獨的哈希中彈出值的簡單問題,並返回一個填充了這些值的數組。但是,陣列中的所有東西似乎都是一個大字符串。所以我試圖用正則表達式來獲取必要的東西。我最好的拍攝是:
@json = @events.scan(/\[\{\"calendar_event\":(\{.*\})\}\]*/)
但這返回形式的東西:
[["{\"starts_at\":\"2010-08-14T17:15:00Z\",\"id\":1,\"availability\":true,\"ends_at\":\"2010-08-14T17:45:00Z\"}},{\"calendar_event\":{\"starts_at\":\"2010-08-15T15:45:00Z\",\"id\":2,\"availability\":true,\"ends_at\":\"2010-08-15T16:15:00Z\"}},..."]]
任何幫助,將不勝感激。
謝謝。我希望在幾個小時前發現它。 – Phillip 2010-08-13 19:16:19
RTFM的經典例子,讓我發笑;好的建議和很好的答案! – Luceos 2013-05-02 13:58:36