You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:50:07