我试图使用红宝石创建一个样本批量上传到Keen.io。从自己的文件:为批量Keen.io上传格式化JSON
Keen.publish_batch(
:signups => [
{ :name => "Bob" },
{ :name => "Mary" }
],
:purchases => [
{ :price => 10 },
{ :price => 20 }
]
)
我在rake任务试图产生类似的东西:
task backfill_keen_jobs: :environment do
jobs_array = Array.new
Job.last(5).each do |j|
job_type = j.job_type.present? ? j.job_type.description : nil
job = {
:keen => {
:timestamp => j.created_at.to_time.iso8601
},
:id => j.id,
:title => j.title,
:type => job_type,
:company => j.company
}
jobs_array << JSON.generate(job)
end
puts jobs_array
puts Keen.publish_batch(:jobs => [jobs_array.to_json])
end
我收到以下错误:
{"jobs"=>[{"success"=>false, "error"=>{"name"=>"InvalidPropertyNameError", "description"=>"An event should be a JSON object of properties."}}]}
我相信,我只是不知何故搞乱了JSON输出,但我似乎无法弄清楚如何/在哪里?
谢谢!
我作出改变,让'{ “工作”=> [{ “成功”=>假, “错误”= > {“name”=>“InvalidPropertyNameError”,“description”=>“一个事件应该是属性的JSON对象。”}} – cman77
尝试删除有关JSON的所有内容。 jobs_array应该只有Hashes推入它,并且publish_batch不需要to_json。 – Elof
非常感谢@Elof!我只需要放下支架。在答案中提供完整代码以防止其他人遇到问题。 – cman77