我正在尝试转换这个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