jq:如何改变 JSON 的结构来避免笛卡尔积?
jq: how to change structure of JSON avoiding cartesian product?
我瘦 JSON 输入:
[
{
"x": [
"2020-02-24T00:00:00",
"2020-02-25T00:00:00",
"2020-02-26T00:00:00"
],
"y": [
3,
2,
6
]
}
]
我想获得:
[
{
"a": "2020-02-24T00:00:00",
"b": 3
},
{
"a": "2020-02-25T00:00:00",
"b": 2
},
{
"a": "2020-02-26T00:00:00",
"b": 6
}
]
如果我申请.[]|{a:.x[],b:.y[]}
我得到笛卡尔积(9项)。
如何改变这个JSON的结构来避免笛卡尔积?
引入一个“$-variable”让事情简单明了:
map(range(0; .x|length) as $i
| {a: .x[$i], b: .y[$i]})
但是 $-variable 免费解决方案只需要多一行:
map([.x, .y]
| transpose[]
| {a: .[0], b: .[1]})
我瘦 JSON 输入:
[
{
"x": [
"2020-02-24T00:00:00",
"2020-02-25T00:00:00",
"2020-02-26T00:00:00"
],
"y": [
3,
2,
6
]
}
]
我想获得:
[
{
"a": "2020-02-24T00:00:00",
"b": 3
},
{
"a": "2020-02-25T00:00:00",
"b": 2
},
{
"a": "2020-02-26T00:00:00",
"b": 6
}
]
如果我申请.[]|{a:.x[],b:.y[]}
我得到笛卡尔积(9项)。
如何改变这个JSON的结构来避免笛卡尔积?
引入一个“$-variable”让事情简单明了:
map(range(0; .x|length) as $i
| {a: .x[$i], b: .y[$i]})
但是 $-variable 免费解决方案只需要多一行:
map([.x, .y]
| transpose[]
| {a: .[0], b: .[1]})