【问题标题】:Ruby + JSON + RegexpRuby + JSON + 正则表达式
【发布时间】:2010-08-13 18:58:51
【问题描述】:

我正在处理一个 RoR 项目,我正在将一个 JSON 对象传递给一个脚本。具体来说,是一个 jquery 日历的事件列表。

首先我从活动记录中获取必要的事件并将它们转换为 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\"}},..."]]

任何帮助将不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby regex json


    【解决方案1】:
    ActiveRecord::Base.include_root_in_json = false
    

    玩得开心。

    Reading documentation helps.

    【讨论】:

    • 谢谢。我希望我能在几个小时前找到这个。
    • 让我发笑的RTFM经典例子;很好的建议和很好的答案!
    猜你喜欢
    • 2011-08-06
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 2023-03-08
    • 2012-05-01
    • 2015-06-26
    相关资源
    最近更新 更多