【问题标题】:Ruby on Rails - Using the Data from JSON (style) ArrayRuby on Rails - 使用 JSON(样式)数组中的数据
【发布时间】:2015-03-02 02:36:57
【问题描述】:

Ruby 'NooB' 问题。

我正在使用 gem 'keen' 来运行返回(JSON 样式)多行字符串的查询:

查询

-@a = Keen.median

返回(数组)

[{"value"=>3, "timeframe"=>{"start"=>"2015-03-01T02:00:00.000Z", "end"=>"2015-03-01T03:00:00.000Z"}}, {"value"=>0, "timeframe"=>{"start"=>"2015-03-01T03:00:00.000Z", "end"=>"2015-03-01T04:00:00.000Z"}}, {"value"=>2, "timeframe"=>{"start"=>"2015-03-01T04:00:00.000Z", "end"=>"2015-03-01T05:00:00.000Z"}}, {"value"=>1, "timeframe"=>{"start"=>"2015-03-01T05:00:00.000Z", "end"=>"2015-03-01T06:00:00.000Z"}}, {"value"=>-1, "timeframe"=>{"start"=>"2015-03-01T06:00:00.000Z", "end"=>"2015-03-01T07:00:00.000Z"}}, {"value"=>1, "timeframe"=>{"start"=>"2015-03-01T07:00:00.000Z", "end"=>"2015-03-01T08:00:00.000Z"}}, {"value"=>1, "timeframe"=>{"start"=>"2015-03-01T08:00:00.000Z", "end"=>"2015-03-01T09:00:00.000Z"}}, {"value"=>0, "timeframe"=>{"start"=>"2015-03-01T09:00:00.000Z", "end"=>"2015-03-01T10:00:00.000Z"}}, {"value"=>0, "timeframe"=>{"start"=>"2015-03-01T10:00:00.000Z", "end"=>"2015-03-01T11:00:00.000Z"}}, {"value"=>1, "timeframe"=>{"start"=>"2015-03-01T11:00:00.000Z", "end"=>"2015-03-01T12:00:00.000Z"}}, {"value"=>0, "timeframe"=>{"start"=>"2015-03-01T12:00:00.000Z", "end"=>"2015-03-01T13:00:00.000Z"}}, {"value"=>1, "timeframe"=>{"start"=>"2015-03-01T13:00:00.000Z", "end"=>"2015-03-01T14:00:00.000Z"}}, {"value"=>0, "timeframe"=>{"start"=>"2015-03-01T14:00:00.000Z", "end"=>"2015-03-01T15:00:00.000Z"}}, {"value"=>-2, "timeframe"=>{"start"=>"2015-03-01T15:00:00.000Z", "end"=>"2015-03-01T16:00:00.000Z"}}, {"value"=>-1, "timeframe"=>{"start"=>"2015-03-01T16:00:00.000Z", "end"=>"2015-03-01T17:00:00.000Z"}}, {"value"=>1, "timeframe"=>{"start"=>"2015-03-01T17:00:00.000Z", "end"=>"2015-03-01T18:00:00.000Z"}}, {"value"=>3, "timeframe"=>{"start"=>"2015-03-01T18:00:00.000Z", "end"=>"2015-03-01T19:00:00.000Z"}}, {"value"=>1, "timeframe"=>{"start"=>"2015-03-01T19:00:00.000Z", "end"=>"2015-03-01T20:00:00.000Z"}}, {"value"=>1, "timeframe"=>{"start"=>"2015-03-01T20:00:00.000Z", "end"=>"2015-03-01T21:00:00.000Z"}}, {"value"=>1, "timeframe"=>{"start"=>"2015-03-01T21:00:00.000Z", "end"=>"2015-03-01T22:00:00.000Z"}}, {"value"=>0, "timeframe"=>{"start"=>"2015-03-01T22:00:00.000Z", "end"=>"2015-03-01T23:00:00.000Z"}}, {"value"=>0, "timeframe"=>{"start"=>"2015-03-01T23:00:00.000Z", "end"=>"2015-03-02T00:00:00.000Z"}}, {"value"=>0, "timeframe"=>{"start"=>"2015-03-02T00:00:00.000Z", "end"=>"2015-03-02T01:00:00.000Z"}}, {"value"=>0, "timeframe"=>{"start"=>"2015-03-02T01:00:00.000Z", "end"=>"2015-03-02T02:00:00.000Z"}}]

我希望能够将这些数据绘制成图表(例如,使用 gem 'Gchart')。

-@chart = GChart.line do |g|
  g.data   = [@a[:value]]
  g.colors = [:red,                  :yellow]
  g.legend = ["Line",                "Wonkiness"]
  g.width             = 600
  g.height            = 150
  g.entire_background = "f4f4f4"
  g.axis(:left) { |a| a.range = 0..6 }
  g.axis :bottom do |a|
  a.labels          = ["@a[:timeframe]"]
  a.label_positions = [0,   50,   100]
  a.text_color      = :black
  end
  g.axis :bottom do |a|
  a.labels          = ["Foo"]
  a.label_positions = [50]
  end
end

使用(或格式化)这个数组数据(到哈希?)的最“红宝石”方式是什么。所以它可以很容易地用于其他功能(即图表)。

提前谢谢你。

【问题讨论】:

  • 每个元素实际上都是一个哈希(@a[0].class #=> Hash),所以你的问题是什么。您可以遍历这个数组并使用@a['value']@a['timeframe] 等获取哈希值。
  • @RustamA.Gasanov - 首先,感谢您的评论。当我用@a.map{|a| a[:value]} 遍历这个数组时,值都是'nil'...'[[nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil ,零,零,零,零,零,零,零,零,零,零],[零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,无,无,无,无,无,无,无,无,无,无,无]]'。 Array / Hash - 'Key' 和 'Value' 是否可能未正确映射,即“key”=>“value”,(JSON当前返回“key”=>value,)?
  • 抱歉,@MarkTheNooB,我再次查看了您的哈希值并意识到它们的键是字符串(“值”),而不是符号(:值)。只需将其更改为 @a.map{|a| a["value"]} 它应该可以工作。我相应地编辑了下面的示例。

标签: ruby-on-rails ruby arrays gchart keen-io


【解决方案1】:

您想向 Gchart.line 传递一个从哈希数组中提取的值数组。你可以这样做:

g.data = @a.map{|a| a["value"]}

示例:

@a=[{"value" => 1, b:2},{"value" => 3, b:4}]
@a.map{|a| a["value"]}

返回:

[1, 3]

【讨论】:

  • 谢谢。非常感谢。
猜你喜欢
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多