我收到错误expected ':' after property name in object at line 1 column 15
如何摆脱' =>'?当我更换" =>" by":"在to_json方法中,我收到错误syntax error, unexpected ':', expecting =>
require 'json'
class Province
attr_accessor :provOrigine, :destination, :total,
:q1, :q2, :q3, :q4
def initialize(line)
@provOrigine = line.split(';').first.split(",").first
@destination = line.split(';').at(1).split(',').first
@q1 = (line.split(';').at(4)).to_i
@q2 = (line.split(';').at(5)).to_i
@q3 = (line.split(';').at(6)).to_i
@q4 = (line.split(';').at(7)).to_i
end
def to_json
{'provOrigine' => @provOrigine.to_s, 'destination' => @destination.to_s, 'q1' => @q1.to_s, 'q2' => @q2.to_s, 'q3' => @q3.to_s, 'q4' => @q4.to_s}
end
end
...
prov_instances =
包含省的所有实例
...
File.open("file_json_complete.json", "w") do |f|
prov_instances.each do |n|
f.write(n.to_json)
end
end
这是我得到的结果
{"provOrigine"=>"Alberta", "destination"=>"Terre-Neuve-et-Labrador", "q1"=>"777", "q2"=>"1089", "q3"=>"553", "q4"=>"474"}{"provOrigine"=>"Alberta", "destination"=>"Nunavut", "q1"=>"24", "q2"=>"70", "q3"=>"29", "q4"=>"29"}{"provOrigine"=>"Alberta", "destination"=>"Île-du-Prince-Édouard", "q1"=>"116", "q2"=>"69", "q3"=>"150", "q4"=>"64"
}
并且每个对象之间没有逗号?
答案 0 :(得分:9)
您需要自己添加逗号。 f.write(n.to_json)
将写出单个省。它无法知道你会继续写更多内容并需要逗号。
是否有理由不能这样做?
File.open('file_json_complete.json', 'w') do |f|
f.puts prov_instances.to_json
end
答案 1 :(得分:4)
我需要使用哈希{}并将其to_json
投射以创建json string
class Province
def to_json(*a)
{'provOrigine' => @provOrigine.to_s,
'destination' => @destination.to_s,
'q1' => @q1.to_s, 'q2' => @q2.to_s,
'q3' => @q3.to_s, 'q4' => @q4.to_s
}.to_json(*a)
end
end
我不需要循环思考每个实例。我可以使用对象Array并将其转换为to_json
File.open("file_json_complete.json", "w") do |f|
f.write(prov_instances.to_json)
end