我有一个大的 json 文件,其中的数据像这样垂直组织
{
"id": "blah",
"jurisdiction": "ny",
"name": "blah blah"
},
{
"id": "blah",
"jurisdiction": "ny",
"name": "blah blha blah"
},
{
"id": "blah",
"jurisdiction": "ny",
"name": "blahblah"
},
如果我尝试使用这样的数据运行 rake 任务
task :import => :environment do
File.open(File.join(Rails.root, "lib", "tasks", "entries.json"), "r") do |file|
file.each do |line|
entry_attrs = JSON.parse(line) if line && line.length >= 2
Court.create!(entry_attrs)
end
end
end
我收到意外的令牌错误
757: unexpected token at '{
如果我手动将 json 更改为水平线
{ "id": "blah", "jurisdiction": "ny", "name": "blah blah"}
然后导入工作。有没有办法编写 rake 任务以便它可以处理以垂直方式组织的 json,或者有没有办法以编程方式将 json 文件更改为正确的格式?
更新
我把它们放在一个这样的字符串中。当我运行 rake 导入时,它会将所有 json 打印到屏幕上,最后一个条目后跟一个逗号
{
"Id": "blah",
"jurisdiction": "ny",
"name": "blah blah"
}
'
之后解析出现异常
l/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/json-1.8.0/lib/json/common.rb:155:in `parse'
因此,rake 任务从未进入我所做的第二个循环Court.create!(court)
。我不确定是否是尾随逗号的问题。
task :import => :environment do
File.open(File.join(Rails.root, "lib", "tasks", "file.json"), "r") do |file|
string = ''
file.each do |line|
string += line
end
court_attrs = JSON.parse(string) if string
court_attrs.each do |court|
Court.create!(court)
end
end
end