如何使用 Ruby 在 json 数组中分配序列号?
How to assign serial count in json array using Ruby?
我想使用 ruby 将序列计数分配给 JSON 数组。这是我的例子 JSON
{
"product_name" : "Prod 1",
"product_description" : "Prod Description 1",
"product_id" : "111",
"product_attribute" : [{
"name" : "Size",
"value" : "10 mm"
}, {
"name" : "Color",
"value" : "Red"
}, {
"name" : "Width",
"value" : "25 mm"
}, {
"name" : "Length",
"value" : "60 mm"
}
]
}
我的预期结果是如何分配新键将计算产品属性数组并动态分配值
{
"product_name" : "Prod 1",
"product_description" : "Prod Description 1",
"product_id" : "111",
"product_attribute" : [{
"name" : "Size",
"value" : "10 mm",
"key_num" : 1
}, {
"name" : "Color",
"value" : "Red",
"key_num" : 2
}, {
"name" : "Width",
"value" : "25 mm",
"key_num" : 3
}, {
"name" : "Length",
"value" : "60 mm",
"key_num" : 4
}
]
}
在上面你可以看到我添加了“key_num”1 到 4。我有时可以将产品属性设置为 5、10、8 等,我需要分配那些“key_num” " 动态地基于 product_attribute
的计数
为此,最简单的方法是将 json 转换为 ruby 映射,应用修改并将其转换回来。
require 'json'
map = JSON.parse json
map["product_attribute"].each.with_index(1) do |h, idx|
h["key_num"] = idx # mutating the map inplace
end
JSON.dump map
#⇒ "{...[{\"name\":\"Size\",\"value\":\"10 mm\",\"key_num\":1},...}"
我想使用 ruby 将序列计数分配给 JSON 数组。这是我的例子 JSON
{
"product_name" : "Prod 1",
"product_description" : "Prod Description 1",
"product_id" : "111",
"product_attribute" : [{
"name" : "Size",
"value" : "10 mm"
}, {
"name" : "Color",
"value" : "Red"
}, {
"name" : "Width",
"value" : "25 mm"
}, {
"name" : "Length",
"value" : "60 mm"
}
]
}
我的预期结果是如何分配新键将计算产品属性数组并动态分配值
{
"product_name" : "Prod 1",
"product_description" : "Prod Description 1",
"product_id" : "111",
"product_attribute" : [{
"name" : "Size",
"value" : "10 mm",
"key_num" : 1
}, {
"name" : "Color",
"value" : "Red",
"key_num" : 2
}, {
"name" : "Width",
"value" : "25 mm",
"key_num" : 3
}, {
"name" : "Length",
"value" : "60 mm",
"key_num" : 4
}
]
}
在上面你可以看到我添加了“key_num”1 到 4。我有时可以将产品属性设置为 5、10、8 等,我需要分配那些“key_num” " 动态地基于 product_attribute
的计数为此,最简单的方法是将 json 转换为 ruby 映射,应用修改并将其转换回来。
require 'json'
map = JSON.parse json
map["product_attribute"].each.with_index(1) do |h, idx|
h["key_num"] = idx # mutating the map inplace
end
JSON.dump map
#⇒ "{...[{\"name\":\"Size\",\"value\":\"10 mm\",\"key_num\":1},...}"