将多个数组+变量合并为单个JSON对象

时间:2020-01-22 14:30:48

标签: ruby-on-rails json

我想将两个数组和两个常量值组合到一个json对象中。

我的数组:
arraywithperson = [阿尔弗雷多,詹姆斯,约翰,莎拉,弗拉基米尔]

arraywithduration = [1,5,3,1,4]

变量:
start_date = Date.today

父母= 1

columns

如何将数组与变量结合起来以获取json输出?

1 个答案:

答案 0 :(得分:1)

您可以使用zip并为此进行映射:

output = arraywithduration.zip(arraywithperson).map do |duration, person|
           {
             'person': person,
             'start_date': start_date,
             'duration': duration,
             'parent': parent
           }
         end
{ 'data': output }

使用zip,您可以将arraywithduration的元素和arraywithperson的元素合并到2个元素的数组中,并位于“主”数组中:

# [[1, "Alfredo"], [5, "James"], [3, "John"], [1, "Sarah"], [4, "Vladimir"]]

map允许您遍历每个元素,并使用所需的键和值创建哈希:

# [{:person=>"Alfredo",  :start_date=>"22.01.2020", :duration=>1, :parent=>1},         
#  {:person=>"James",    :start_date=>"22.01.2020", :duration=>5, :parent=>1}, 
#  {:person=>"John",     :start_date=>"22.01.2020", :duration=>3, :parent=>1}, 
#  {:person=>"Sarah",    :start_date=>"22.01.2020", :duration=>1, :parent=>1}, 
#  {:person=>"Vladimir", :start_date=>"22.01.2020", :duration=>4, :parent=>1}]

要获得预期输出中显示的开始日期,可以使用strftime(这是一个字符串BTW):

start_date = Date.today.strftime('%d.%m.%Y')