簡體   English   中英

Ruby / Sinatra的JSON數據庫模塊? Ruby / Sinatra的JS lowDB替代品?

[英]JSON database module for Ruby/Sinatra? A JS lowDB alternative for Ruby/Sinatra?

我必須處理一個像這樣的巨大json,作為實時數據源,它每5分鍾從網址中加載一次。

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)返回此sprot的所有事件列表對象
  • getEvent(Sport,event_id)返回與給定event_id匹配的事件
  • getOutcomes(事件,結果)...等等

是否有一個解析json的庫,並且已經有一些方法可以幫助我完成此類工作? 例如:obj.find(sport_id)...

在JS中,您可以使用LowDB https://github.com/typicode/lowdb ,在Ruby / Sinatra中有類似的東西嗎? 或任何方法建議? 我沒有使用Rails。

謝謝建議

您總是可以使用Ruby內置的JSON庫。 您將能夠執行類似的操作

json_string = '{"name": "my name", "age": 5}'

object = JSON.parse(json_string)
object["name"] => "my name"

然后,您可以在返回的對象上使用常規的ruby hash / array函數。 就您而言,您可以按照

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

假設您已經解析了JSON並將結果值傳遞給該函數,它將返回具有給定ID的運動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM