如何将复杂的嵌套json转换为csv

阿尔比

这是输入的json

{
    "step": 1,
    "inputs": {
        "first_input": {
            "file_id": "xxx"
        }
        "second_input": 3
    }
}
{
    "step": 2,
    "inputs": {
        "my_first_arg": {
            "file_id": "yyy"
        }
        "my_second_arg": 0
    }
}

所需的csv文件是

1,first_input,"xxx"
1,second_input,3
2,my_first_arg:"yyy"
2,my_second_arg,0

这里的挑战是每个inputs字段都包含一个具有不同键名和值类型的字典。基本上,我想要该step字段的值inputs,和的所有键以及的值的子节点inputs,但具有相关数据的位置应保持在csv的同一行中。

产生所需值的数组:

.step as $step
| .inputs
| to_entries[]
| .key as $key
| [$step, .key]
  + (.value | if type=="object" then to_entries[] | [.key, .value] else [$key, .] end)

后跟踪@csv在年底会产生CSV值,用数字不带引号。使用-r命令行选项并对样本输入进行较小的校正将产生:

1,"first_input","file_id","xxx"
1,"second_input","second_input",3
2,"my_first_arg","file_id","yyy"
2,"my_second_arg","my_second_arg",0

如果您确实希望输出如Q所示,请"\""在需要的地方有条件地加上引号(),并使用join(",")代替@csv

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档