我想使用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
答案 0 :(得分:1)
attr_accessor :2
不可能。 2
在红宝石中不是有效的标识符。但是tm
是。
取决于您的分数确切是多少,您可以执行以下操作:
score['2']
但是,这几乎不更改名称就可以得到。