【发布时间】:2021-09-06 14:38:23
【问题描述】:
我有一些非常典型的 CSV 样式数据的 JSON 数据,但是它以 JSON 表示。我正在努力找出正确的 jq 表达式以将以下 JSON 转换回一些 JSON,这些 JSON 可以使用 @csv 生成适当的 CSV。
“列”的数量是固定的,即"AAA" 值,但每个“列”中的值数量是动态的,但跨列是固定的。即"AAA"、"BBB"、"CCC"等数组的长度都是一样的,但是长度是动态的,可以在数据集之间变化。
输入(注意存在的无效数字,以举例说明):
{
"AAA": [
111.1,
111.2,
111.3,
111..,
111.n
],
"BBB": [
222.1,
222.2,
222.3,
222..,
222.n
],
"CCC": [
333.1,
333.2,
333.3,
333..,
333.n
],
"DDD": [
444.1,
444.2,
444.3,
444..,
444.n
],
"EEE": [
555.1,
555.2,
555.3,
555..,
555.n
]
}
所需的输出(注意存在的无效数字,以说明示例):
{
[
"AAA",
"BBB",
"CCC",
"DDD",
"EEE"
],
[
111.1,
222.1,
333.1,
444.1,
555.1
],
[
111.2,
222.2,
333.2,
444.2,
555.2
],
[
111.3,
222.3,
333.3,
444.3,
555.3
],
[
111..,
222..,
333..,
444..,
555..
],
[
111.n,
222.n,
333.n,
444.n,
555.n
]
}
这是所需的 CSV,用于说明目的(使用 @csv 进行转换非常简单):
AAA,BBB,CCC,DDD,EEE
111.1,222.1,333.1,444.1,555.1
111.2,222.2,333.2,444.2,555.2
111.3,222.3,333.3,444.3,555.3
111..,222..,333..,444..,555..
111.n,222.n,333.n,444.n,555.n
如果没有包含"AAA"'header'值的结果对象中的第一个数组,所需的表达式要容易得多,那么没有它们我也可以轻松生活。
谢谢。
【问题讨论】: