Ruby遍历文本文件生成JSON时哈希被覆盖的解决方法
解决Ruby遍历文件转JSON时数据被覆盖的问题
你的问题核心是每次循环复用同一个哈希对象,导致后一条数据直接覆盖前一条。正确的做法是用数组存储每条记录的独立哈希,每次循环创建新的哈希实例加入数组,最后将整个数组转为JSON格式。
修正后的完整代码
require 'json' # 初始化数组存储所有车辆信息 cars = [] File.foreach("textfile") do |line| # 跳过空行,避免处理无效数据 next if line.strip.empty? fields = line.split color = fields.first parking_spot = fields[1] car_model = fields.last # 为每一行创建独立哈希,添加到数组中 cars << { 'color' => color, 'parkingspot' => parking_spot, 'car' => car_model } end # 转换为格式化的JSON并输出(也可写入文件) puts JSON.pretty_generate(cars)
关键说明
- 引入
json库:Ruby默认需手动引入才能处理JSON转换 - 用数组存储哈希:确保每条车辆记录都是独立对象,不会被后续循环覆盖
- 跳过空行:处理文件中可能存在的空白行,避免因空数据报错
- 生成格式化JSON:
JSON.pretty_generate输出可读性更强的结构化JSON
最终输出示例
运行代码后会得到如下JSON结果:
[ { "color": "Blue", "parkingspot": "A", "car": "Mustang" }, { "color": "Red", "parkingspot": "B", "car": "Camaro" } ]
内容的提问来源于stack exchange,提问作者Jake Statefarm
相关产品推荐
相关产品推荐

