Ruby中如何不使用命令行,通过代码实现JSON转YAML
Ruby 原生代码实现JSON转YAML(非命令行管道方案)
整个实现完全依托Ruby内置标准库完成,不需要调用命令行管道、也不需要安装第三方依赖,补全的代码逻辑如下:
- 补充引入YAML标准库依赖,JSON解析后生成的Ruby原生对象,需要调用YAML库的序列化能力完成格式转换
- 对已经完成字段提取、排序处理的Ruby数据对象,直接调用YAML序列化方法生成标准YAML字符串
- 将生成的YAML内容写入预先创建的目标目录下的文件即可
完整可运行的代码:
require 'json' # 补充YAML库引入,Ruby 2.0+版本默认自带该标准库 require 'yaml' filepath = "./response.json" directory_name = "read" # 移除原代码中重复定义的冗余行 Dir.mkdir(directory_name) unless File.exist?(directory_name) if File.file?(filepath) storageJson = JSON.parse(File.read(filepath)).fetch('items', []).sort_by { |event| event['startTime'] } # 核心转换逻辑 # 将处理后的Ruby对象序列化为YAML格式字符串,可通过参数调整输出格式 yaml_content = YAML.dump(storageJson, line_width: -1) # 将序列化后的内容写入目标文件 target_file_path = File.join(directory_name, "converted_items.yml") File.write(target_file_path, yaml_content) end
补充说明:
line_width: -1参数的作用是取消长内容自动折行,让输出的YAML格式更符合常规配置文件的使用习惯- 如果需要输出不带YAML默认文档分隔头的内容,可以在
YAML.dump调用时追加header: false参数 - 整个流程没有使用命令行重定向管道,完全通过Ruby代码的文件读写、格式序列化能力完成转换,符合要求的代码结构形式
内容的提问来源于stack exchange,提问作者theGreatRegression
相关产品推荐
相关产品推荐

