哈希到json,json中没有嵌套数组
我将从三个数组中生成一个散列,然后尝试构造一个json。我成功地使用了json对象has数组哈希到json,json中没有嵌套数组,json,ruby,Json,Ruby,我将从三个数组中生成一个散列,然后尝试构造一个json。我成功地使用了json对象has数组 require 'json' A = [['A1', 'A2', 'A3'], [ "A1_xfactor", "A2_xfactor", "A3_xfactor"], ["A1_pull", "A2_pull", "A3_pull"]] kl = { 'obj' => A[0].zip(A[1],A[2]).map { |k, v,l| { 'f1' => k, 'f2' =>
require 'json'
A = [['A1', 'A2', 'A3'], [ "A1_xfactor", "A2_xfactor", "A3_xfactor"], ["A1_pull", "A2_pull", "A3_pull"]]
kl = { 'obj' => A[0].zip(A[1],A[2]).map { |k, v,l| { 'f1' => k, 'f2' => v, 'xfactor' => l} }}.to_json
puts kl
输出
{
"obj": [{
"f1": "A1",
"f2": "A1_xfactor",
"xfactor": "A1_pull"
}, {
"f1": "A2",
"f2": "A2_xfactor",
"xfactor": "A2_pull"
}, {
"f1": "A3",
"f2": "A3_xfactor",
"xfactor": "A3_pull"
}]
}
而不是数组,我希望它没有数组,F1必须作为一个单独的对象出现
{
"obj": {
"A1": {
"f2": "A1_xfactor",
"xfactor": "A1_pull"
},
"A2": {
"f2": "A2_xfactor",
"xfactor": "A2_pull"
},
"A3": {
"f2": "A3_xfactor",
"xfactor": "A3_pull"
}
}
}
您可以尝试通过压缩每个元素来减少
A
然后使用each_with_object
迭代每个数组,对于每个元素,将其第一个元素作为key
,第二个元素作为f2
,数组中的第二个/最后一个元素作为因子
将自定义哈希分配给键(A1
,A2
,A3
)
之后,您可以存储它并像{obj:result}
一样使用它
A.reduce(&:zip).each_with_object({}) do |((key, f2), factor), hash|
hash[key] = { f2: f2, xfactor: factor }
end
# {"A1"=>{:f2=>"A1_xfactor", :xfactor=>"A1_pull"},
# "A2"=>{:f2=>"A2_xfactor", :xfactor=>"A2_pull"},
# "A3"=>{:f2=>"A3_xfactor", :xfactor=>"A3_pull"}}
A.reduce(&:zip)
:我会记住的。