ruby-on-rails - 从字符串 / Ruby 中提取子字符串
问题描述
我从一个名为“apps”的变量中获取数据。
我有这个数据结构:
{"id"=>001,
"name"=>"test01",
"users"=>
[{"id"=>01,
"name"=>"test02"},
{"id"=>02,
"name"=>"test03"}]}
如何从用户子字符串中提取名称值?
我努力了
apps.each do |test|
data = Hash.new
data['id'] = test['id']
data['name'] = test['name']
data['username'] = test['users.name']
userdata = data
userdata.each do |row|
File.write('test.yaml', row.to_yaml)
end
end
但这不起作用。
所需的输出将是:
{"id"=>"01", "name"=>"test02","id"=>"02", "name"=>"test03"}
解决方案
你只需要require 'yaml'
为了在 Hash/Array 类上使用它,你不需要遍历数组或散列,to_yaml
已经为你处理了。
require 'yaml'
data = {"id"=>001,
"name"=>"test01",
"users"=>
[{"id"=>01,
"name"=>"test02"},
{"id"=>02,
"name"=>"test03"}]}
File.write('test.yml', data["users"].to_yaml)
推荐阅读
- c - 当 p 指向一个数组(int)索引时,'-1[p]' 是什么?
- r - 创建类似于 devtools::check() 的输出诊断(颜色和加载符号)
- html - 如何使用 CSS FlexBox 创建复杂的页面布局
- python - Python:并非所有参数都在字符串格式期间转换
- amazon-web-services - AWS API Gateway - Lambda - 内部服务器错误
- java - 在多线程环境中使用 for 循环避免 ConcurrentModificationException
- postgresql - 将 Ansible 返回值映射到第二个任务
- swift - Vapor:如何协调多个请求,直到完成一个中心请求
- javascript - 每次点击创建单独和独特的工具提示
- javascript - 使用 for 循环创建变量