如何将Hash结构的值转换为数组以适配Elasticsearch结果解析格式?
实现方案
方法1:使用Ruby内置的transform_values(推荐,Ruby 2.4及以上版本支持)
直接一行代码即可完成转换:
result = hash.transform_values { |value| [value] }
方法2:兼容旧版本Ruby的实现
如果使用的Ruby版本低于2.4,可以用each_with_object遍历生成新Hash:
result = hash.each_with_object({}) do |(key, original_value), output_hash| output_hash[key] = [original_value] end
效果验证
拿你提供的示例Hash运行上述代码后,输出的result结构如下,完全符合预期:
{ "ABC" => [ { "attributes" => { "id" => "1", "from" => "test", "to" => "something" } } ], "XYZ" => [ { "attributes" => { "id" => "1", "from" => "value", "to" => "another value" } } ] }
内容的提问来源于stack exchange,提问作者Shamila
相关产品推荐
相关产品推荐

