我刚开始学习JSON以及如何在不同文件类型之间来回转换。
如果我正在尝试将CSV文件转换为JSON
说我是否有人的CSV文件
(First name, Last name, age)
David Chin 40
David Lin 40
David Ping 30
Sandra Lee 25
Sandra Long 45
我可以将其转换为JSON而不进行任何格式化。
我如何尝试将CSV转换为嵌套的JSON?
希望输出看起来像
{"David":{
"Chin": "40"
"Lin": "40"
"Ping": "30"
},
"Sandra":{
"Lee": "25"
"Long": "45"}
}
是否有任何特定的代码可以自由格式化转换?
对于正确方向的任何帮助都表示赞赏,或者有关如何格式化JSON的指示也可以使用。我只是不知道我会在哪里操作以在输出中获得该格式。
答案 0 :(得分:0)
以下是使用jq
的解决方案如果文件filter.jq
包含
[
split("\n") # split string into lines
| [.[0] | split(",")[]] as $headers # split header
| (.[1:][] | split(",")) # split data
| select(length>0) # eliminate blanks
| [ [ $headers, . ] #
| transpose[] # assemble objects
| {key:.[0], value:.[1]} # from keys and values
] | from_entries #
]
| reduce group_by(.First)[][] as $r ( # construct final result
{}
; .[$r.First] = (.[$r.First]//{}) * {($r.Last):$r.Age}
)
和data
包含
First,Last,Age
David,Chin,40
David,Lin,40
David,Ping,30
Sandra,Lee,25
Sandra,Long,45
然后命令
jq -M -R -s -r -f filter.jq data
将产生输出
{
"David": {
"Chin": "40",
"Lin": "40",
"Ping": "30"
},
"Sandra": {
"Lee": "25",
"Long": "45"
}
}