如何使用ruby代码在循环内创建JSON数据?

时间:2013-08-08 13:02:43

标签: ruby json

我需要使用ruby代码(Ruby only not Rails)在循环内创建JSON数据。

我需要完全如下代码,

for i in 0..2
   jsondata = {:aaa => 1.4, :bbb => 0.89, :ccc => 0.6, :ddd => 1.3}
end

final jsondata = [{:aaa => 1.4, :bbb => 0.89, :ccc => 0.6, :ddd => 1.3}, {:aaa => 1.4,
:bbb => 0.89, :ccc => 0.6, :ddd => 1.3}, {:aaa => 1.4, :bbb => 0.89, :ccc => 0.6, :ddd 
=> 1.3}] (3 times loop. Not unique data everytime different data)

final jsondata 应该包含循环中运行的所有jsondata。这是最终的JSON数据。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

您可以使用ruby的内置JSON库和数组来执行此操作:

require 'json'
entries = []

entries = (0..2).map |i|
  {:aaa => 1.4, :bbb => 0.89, :ccc => 0.6, :ddd => 1.3}
end

p entries
# => [{:aaa=>1.4, :bbb=>0.89, :ccc=>0.6, :ddd=>1.3}, {:aaa=>1.4, :bbb=>0.89, :ccc=>0.6, :ddd=>1.3}, {:aaa=>1.4, :bbb=>0.89, :ccc=>0.6, :ddd=>1.3}]

p entries.to_json
# => "[{\"aaa\":1.4,\"bbb\":0.89,\"ccc\":0.6,\"ddd\":1.3},{\"aaa\":1.4,\"bbb\":0.89,\"ccc\":0.6,\"ddd\":1.3},{\"aaa\":1.4,\"bbb\":0.89,\"ccc\":0.6,\"ddd\":1.3}]"

注意:如果您只需要哈希数组而不是实际的JSON字符串,则可以删除require 'json'

答案 1 :(得分:1)

你的问题有点混乱,所以我不确定你希望完成什么,但这样的事情应该有效:

data = (0..2).map do |i|
  { :a => i, :b => (i+1) }
end

答案 2 :(得分:0)

问题并不完全清楚,但这完全符合您的要求:

require 'json'

json_data = 3.times.map { {:aaa => 1.4, :bbb => 0.89, :ccc => 0.6, :ddd => 1.3} }
json_data.to_json

=> "[{\"aaa\":1.4,\"bbb\":0.89,\"ccc\":0.6,\"ddd\":1.3},{\"aaa\":1.4,\"bbb\":0.89,\"ccc\":0.6,\"ddd\":1.3},{\"aaa\":1.4,\"bbb\":0.89,\"ccc\":0.6,\"ddd\":1.3}]"