使用JQ将json转换为csv时,每行添加字符串



我正在尝试转换这个JSON:

{
"reservationSummary": {
"pickLoc": {
"locationCode": "EWR"
}
},
"vehicleSummaryList": [
{
"carGroup": "Economy",
"carClass": "A",
"payNowRate": {
"amount": "2327.49",
"totalRateAmount": "3387.19"
},
"payLaterRate": {
"amount": "2449.99",
"totalRateAmount": "3540.79"
}    },
{
"carGroup": "Compact",
"carClass": "B",
"payNowRate": {
"amount": "2327.49",
"totalRateAmount": "3387.19"
},
"payLaterRate": {
"amount": "2449.99",
"totalRateAmount": "3540.79"
}    }
]
}

将转换成如下所示的CSV:

EWR,A,Economy,A,3540.79
EWR,B,Compact,A,3540.79

注意:我将EWR(从.reservationSummary.pickLoc.locationCode添加到每行的第一列)

我已经成功地获得了csv,没有它,像这样:

jq -r '(.vehicleSummaryList[] | [.carClass, .carGroup, .carAvailability, .payLaterRate.totalRateAmount])|@csv' examle.json

但是任何像这样添加.reservationSummary.pickLoc.locationCode的尝试:

jq -r '.reservationSummary.pickLoc.locationCode, (.vehicleSummaryList[] | [.carClass, .carGroup, .carAvailability, .payLaterRate.totalRateAmount])|@csv' examle.json

得到如下错误:

jq: error (at examle.json:51): string ("EWR") cannot be csv-formatted, only array

@csv需要一个数组作为输入,但.reservationSummary.pickLoc.locationCode只产生一个字符串。相反,通过将其包装到[]中使其成为一个数组,然后使用+:

将两个数组添加在一起。
[.reservationSummary.pickLoc.locationCode] + (
.vehicleSummaryList[]
| [.carClass, .carGroup, .carAvailability, .payLaterRate.totalRateAmount]
)
| @csv