簡體   English   中英

Rails生成JSON對象

[英]Rails generating JSON Object

我想在從數據庫中獲取數據時生成一個JSON對象。

def duration
  return @data[:duration] unless @data[:duration].nil?

  @data[:duration] = per_hour.collect do | val |
    [val[0], val[1]]
  end
end

我得到了我需要的數據,但是數組不正確。 我的看法如下:

var array = <%= raw @duration_data.to_json %>;

我的數組如下所示:

var array = [{"data": [[0,0],[1,60.0]] }];

但是我需要的是:

var array = [{"data": {"0":0, "1":60.0} }];

您只需要將數組轉換為哈希即可:

@data[:duration] = per_hour.collect do |val|
  [val[0], val[1]]
end.to_h

對於Ruby 1.9:

@data[:duration] = Hash[*per_hour.collect { |val| [val[0], val[1]] }]

我會這樣寫:

def duration
  @data[:duration] ||= build_duration
end 

這是一種簡短的說法:如果不是nil,則返回@data[:duration] ,否則,將build_duration分配給它。

然后定義build_duration

def build_duration
  result = {}
  per_hour.each do |val|
    result[val[0]] = val[1]
  end
  result
end

您可以編寫更緊湊的build_duration ,但是對我來說,這是很build_duration :它將構建一個哈希並根據需要填充它。

@data[:duration] ||= per_hour.collect { | val | [val[0], val[1]] }.to_h

嘗試這個。

暫無
暫無

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

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