【问题标题】:JSON database module for Ruby/Sinatra? A JS lowDB alternative for Ruby/Sinatra?Ruby/Sinatra 的 JSON 数据库模块? Ruby/Sinatra 的 JS lowDB 替代品?
【发布时间】:2016-03-26 04:16:09
【问题描述】:

我必须处理像这样充当实时数据源的巨大 json,每 5 分钟从一个 url 加载一次..

sports: [
{
    id: 200,
    title: "Horse Racing",
    meetings: [ ],
    is_virtual: false,
    events: [...],
    pos: 83
},
{
    id: 600,
    title: "Tennis",
    meetings: [ ],
    is_virtual: false,
    events: [
    {
        id: 301804310,
        is_virtual: false,
        outcomes: [
        {
            id: 32779738900,
            description: "Brown/Pliskova",
        },
        {
            id: 32779738900,
            description: "Brown/Pliskova",
        }]
    }]
}]

并且需要写方法如

  • getAllSports() 返回一个包含所有运动的数组对象
  • getSport(sport_id) 返回具有此运动 id 的对象
  • getAllEvents(Sport) 返回此项目的所有事件列表对象
  • getEvent(Sport, event_id) 返回与给定 event_id 匹配的事件
  • getOutcomes(Event, results) ... 等等

是否有一个库可以解析 json 并且已经有一些方法可以帮助我做这种事情?例如:obj.find(sport_id)...

在 JS 中,你有 LowDB https://github.com/typicode/lowdb,在 Ruby/Sinatra 中有类似的吗?或者有什么方法建议?我没有使用 Rails。

谢谢指教

【问题讨论】:

    标签: javascript ruby json sinatra


    【解决方案1】:

    您始终可以使用 Ruby 内置的 JSON 库。你可以做类似的事情

    json_string = '{"name": "my name", "age": 5}'
    
    object = JSON.parse(json_string)
    object["name"] => "my name"
    

    然后您可以在返回的对象上使用常规的 ruby​​ 哈希/数组函数。在您的情况下,您可以按照以下方式做一些事情

    def getSport(json_object, id)
      json_object["sports"].select { | h | h["id"] == id }.first
    end
    

    假设您已经解析了 JSON 并将结果值传递给该函数,它将返回具有给定 ID 的运动。

    【讨论】:

    • 是的,我想知道是否有人已经编写了一些方法来 findSportByName({name: ''Horse") 例如,处理一个已解析的对象就像这样......,无论如何谢谢; )
    • 任何已经为您的特定案例创建了一些东西的人的可能性总是微乎其微。但是,使用 Ruby 的一般功能,很容易找到您要查找的信息。
    • 也许不是,但谁知道呢。在 JS/Node 我有 LowDB github.com/typicode/lowdb 它完全符合我想要的
    • 据我所知,lowdb 也没有您正在寻找的特定功能。我能想到的最接近的东西是activerecord gem。不过,我个人认为它对于简单的 json 解析和过滤来说太大了。
    • 是的,在核心 os lowdb 驻留 lodash collention utils 函数,可能问题与这样的事情有关,我会看看 activeRecord 位似乎很多,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 2015-05-17
    • 2018-08-26
    相关资源
    最近更新 更多