gpt4 book ai didi

ruby - 在 ruby​​ 中将 csv 转换为 json

转载 作者:太空宇宙 更新时间:2023-11-03 17:10:39 24 4
gpt4 key购买 nike

CSV

id,modifier1_name,modifier2_price,modifier2_name,modifier2_price,modifier2_status
1,'Small',10,'Large',20,'YYY'
2,'Small',20,'Large',30,'YYY'

JSON

[
{
id: 1,
modifier: [
{name: 'Small', price: 10},
{name: 'Large', price: 20, status: 'YYY'}]
},
{
id: 2,
modifier: [
{name: 'Small', price: 20},
{name: 'Large', price: 30, status: 'YYY'}],
}
]

在修饰符可以不同的情况下,如何将 CSV 转换为 Json?

最佳答案

您需要自己映射修饰符,因为没有内置方法可以将哈希值映射到逻辑中的数组:

JSON.pretty_generate(CSV.open('filename.csv', headers: true).map do |row|
modifier = {}
row.each do |k, v|
if k =~ /modifier(.)_(.*)$/
(modifier[$1] ||= {})[$2] = v
end
end
{ id: row['id'],
modifier: modifier.sort_by { |k, v| k }.map {|k, v| v }
}
end)

对于文件*

id,modifier1_name,modifier1_price,modifier2_name,modifier2_price,modifier2_status
1,Small,10,Large,20,YYY
2,Small,20,Large,30,YYY

*我对您显示的文件做了一些更改,因为它不会给您所需的结果 - 例如,您声明了两次 modifier2_price

您将获得:

[
{
"id": "1",
"modifier": [
{
"name": "Small",
"price": "10"
},
{

"name": "Large",
"price": "20",
"status": "YYY"
}
]
},
{
"id": "2",
"modifier": [
{
"name": "Small",
"price": "20"
},
{
"name": "Large",
"price": "30",
"status": "YYY"
}
]
}
]

关于ruby - 在 ruby​​ 中将 csv 转换为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23186824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com