JQ - 如何将带有 headers 的 CSV 转换为带有嵌套字典的 JSON 数组

JQ - how to convert CSV with headers to JSON array with nested dictionaries

我得到了以下 CSV 样本

key1,key2,key3,key4,key5
val1,val2,val3,val4,val5

正在寻找如何将上述结构转换为以下 JSON 结构的提示

[
{
"event": "bleep",
"sourcetype": "rats",
"fields":  {
"key1":"val1",
"key2":"val2",
"key3":"val3",
"key4":"val4",
"key5":"val5"
 }
},
{
"event": "bleep",
"sourcetype": "rats",
"fields":  {
"key1":"val1",
"key2":"val2",
"key3":"val3",
"key4":"val4",
"key5":"val5"
 }
}
]

提前致谢!

Alasql lib 可以从服务器加载数据文件,解析它并将结果放入 JSON 对象数组。

所以,这是给你的一些例子:

<script src="alasql.min.js"></script>
<script>
        alasql('SELECT * FROM CSV("FileName.csv",{headers:true})',[],function(res){
        var dataResult = {items:res};
        });
</script>

使用-R将输入读取为原始文本

jq -R '
  (. / ",") as $keys
  | [ inputs / "," | [$keys, .]
    | reduce transpose[] as $i (
        {event: "bleep", sourcetype: "rats"}; .fields[$i[0]] = $i[1])
      ]
' input.csv

Demo