arrays - Ruby按特定顺序合并两个数组
问题描述
我正在尝试使用来自 json 对象的 s3api cli 为 aws put-object-tagging 创建“TagSet”。我已经将 json 解析为散列,这是我实现最终目标的最大成功。
示例 json:
{ "key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", "key5": "value5" }
最终目标示例:
'{"TagSet": [{ "Key": "key1", "Value": "value1" }, { "Key": "key2", "Value": "value2"}, { "Key": "key3", "Value": "value3"}, { "Key": "key4", "Value": "value4"}, { "Key": "key5", "Value": "value5"}]}'
到目前为止,我已经将 json 解析为哈希,然后使用以下命令将键和值拆分为 2 个数组:
json = '{ "key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", "key5": "value5" }'
new_hash = JSON.parse(json)
keys = new_hash.keys
values = new_hash.values
my_keys = []
my_vals = []
keys.each do |k|
my_keys << "--Key " + k.to_s
end
values.each do |v|
my_vals << "--Value " + v.to_s
end
我想我可以遍历每个数组并将它们插入到一个数组中。但是我得到的输出是每个值重复的所有键的递归列表。
output = []
my_keys.each do |x|
my_vals.each do |y|
output << x + " " + y
end
end
输出:
--Key key1 --Value value1
--Key key1 --Value value2
--Key key1 --Value value3
--Key key1 --Value value4
--Key key1 --Value value5
--Key key2 --Value value1
--Key key2 --Value value2
--Key key2 --Value value3
--Key key2 --Value value4
--Key key2 --Value value5
--Key key3 --Value value1
--Key key3 --Value value2
--Key key3 --Value value3
--Key key3 --Value value4
--Key key3 --Value value5
--Key key4 --Value value1
--Key key4 --Value value2
--Key key4 --Value value3
--Key key4 --Value value4
--Key key4 --Value value5
--Key key5 --Value value1
--Key key5 --Value value2
--Key key5 --Value value3
--Key key5 --Value value4
--Key key5 --Value value5
任何有关如何创建此 TagSet 的建议将不胜感激!
解决方案
require 'json'
json = '{ "key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4", "key5": "value5" }'
tagset = JSON.parse(json)
.map { |key, value| { Key: key, Value: value } }
# => [{"Key":"key1","Value":"value1"},{"Key":"key2","Value":"value2"},{"Key":"key3","Value":"value3"},{"Key":"key4","Value":"value4"},{"Key":"key5","Value":"value5"}]
{TagSet: tagset}.to_json
# => '{"TagSet":[{"Key":"key1","Value":"value1"},{"Key":"key2","Value":"value2"},{"Key":"key3","Value":"value3"},{"Key":"key4","Value":"value4"},{"Key":"key5","Value":"value5"}]}'
推荐阅读
- python - 为什么 sqlalchemy 似乎自发地提交某些查询而忽略其他查询?
- react-native - React Native 测试 android 和 ios 组件
- java - 关于覆盖类(数据类或 POJO)中的 toString() 方法和调用 list.toString() 的困惑?
- amazon-cognito - AWS Cognito 身份池创建的默认角色
- c# - '不能启用此约束,因为并非所有值都有对应的父值。'
- python - 正则表达式组不包括 az 但不包括 c
- nestjs - 我可以使用@nestjs/cofnig 从 appModule 中的数据库获取配置吗?
- laravel - Laravel Pluck 来自“与关系”
- javascript - 在 IndexedDB 中运行并行写入事务是否更快?
- python-3.x - 排列python列表中的所有值