Как использовать число в качестве символов в рубине - PullRequest
0 голосов
/ 19 октября 2018

Я хочу использовать JSON API.У него есть числовой объект, но я не знаю, как его использовать.

JSON выглядит так:

"scores": {
  "2": {
    "home": "2",
    "away": "0"
   }
}

Мой код Ruby выглядит так:

class Score < Base
  attr_accessor :2
end

def parse_scores(args = {})
  Score.new(args.fetch("scores", {}))
end

Такой же код работает в другом классе, где JSON выглядит так:

"timer": {
    "tm": 86,
    "ts": 4,
    "tt": "1"
}

А код Ruby выглядит так:

class Timer < Base
  attr_accessor :tm, :ts, :tt       
end

def parse_timer(args = {})
  Timer.new(args.fetch("timer", {}))
end

Baseкласс выглядит так:

class Base
  attr_accessor :errors

  def initialize(args = {})
    args.each do |name, value|
      attr_name = name.to_s 
      send("#{attr_name}=", value) if respond_to?("#{attr_name}=")
    end
  end
end

Я нахожу это решение (всем спасибо за помощь):

 module Betsapi
  class Score < Base
    attr_accessor :fulltime
    def initialize(args = {})
      super(args)
      self.fulltime = args['2']
   end
  end
end

1 Ответ

0 голосов
/ 19 октября 2018
 attr_accessor :2

Невозможно.2 не является допустимым идентификатором в ruby.Но tm is.

В зависимости от того, что именно ваш счет, вы можете сделать это:

 score['2']

Но это в значительной степени, насколько вы получите без измененияимена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...