ruby 从对象写入 json 文件

标签 ruby json object

我在第 1 行第 15 列的对象中的属性名称之后收到错误消息 expected ':' 我怎样才能摆脱 '=>'?当我在 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 = 包含 Province 的所有实例 ...

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" 
}

每个对象之间没有逗号?

最佳答案

您需要自己添加逗号。 f.write(n.to_json) 将写出一个单个省。它无法知道您将继续写更多内容并需要一个逗号。

你有什么理由不能这样做吗?

File.open('file_json_complete.json', 'w') do |f|
  f.puts prov_instances.to_json
end

关于ruby 从对象写入 json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25923930/

相关文章:

c# - 使用 JsonConverter 反序列化 JSON 字典值

java - 将 Mongodb 日期转换为 Java 日期时出错

php - 比较从数据库返回的值与 json 返回的值

java - 迭代HashMap并获取Object中值的 "Lowest"Integer

javascript - 创建带有变量索引的多维数组

javascript - 使用数组中的数据更改对象字段

ruby-on-rails - 部分渲染中的错误消息两次

Ruby:类 `_run_suite' 的未定义方法 `Test::Unit::Runner'

java - 在java中转换ruby unpack等效项

ruby - 如何在 Ruby 中将整数数组连接到单个整数