【发布时间】:2020-03-06 01:27:50
【问题描述】:
我正在尝试解析 API 调用的 json 输出。输出有一个订单数组,每个订单都有一个项目数组。我想解析输出,以便每个单独的项目都有一个带有其父订单 ID 的单个 CSV 输出。
因此,如果一个订单包含多个项目,我需要为其订单中的每个项目重复 orderID。我已经阅读了 jq 文档和几十个示例,并且我已经尝试了几个小时的反复试验。我很困惑如何做到这一点。
我在 jq 解析语法上苦苦挣扎。这些例子都没有真正的帮助,我只是感到困惑。以下是基础知识:
curl -s https://api.site.com/orders?page=1&pageSize=10 | jq '.'
下面是一个 json 示例。
{
"orders": [
{
"orderId": 217356098,
"items": [
{
"orderItemId": 327010821,
"lineItemKey": "1",
"sku": "AJC-C10S",
"name": "TestDescription",
"imageUrl": null,
"weight": null,
"quantity": 2,
"unitPrice": 106.85,
"taxAmount": null,
"shippingAmount": null,
"warehouseLocation": null,
"options": [],
"productId": null,
"fulfillmentSku": null,
"adjustment": false,
"upc": null,
"createDate": "2016-11-09T02:11:28.307",
"modifyDate": "2016-11-09T02:11:28.307"
},
{
"orderItemId": 327010822,
"lineItemKey": "1",
"sku": "AJC-C106",
"name": "AnotherTestDescription",
"imageUrl": null,
"weight": null,
"quantity": 2,
"unitPrice": 106.85,
"taxAmount": null,
"shippingAmount": null,
"warehouseLocation": null,
"options": [],
"productId": null,
"fulfillmentSku": null,
"adjustment": false,
"upc": null,
"createDate": "2016-11-09T02:11:28.307",
"modifyDate": "2016-11-09T02:11:28.307"
}
]
},
],
"total": 359934,
"page": 1,
"pages": 179968
}
预期输出(当然没有列标题):
orderId,orderItemId,sku,name
217356098,327010821,"JC-C10S","TestDescription"
217356098,327010822,"JC-C106","AnotherTestDescription"
如您所见,每个项目都有自己的行,但如果它们来自同一个订单,则 orderId 应该在每一行重复。
我该怎么做?
【问题讨论】:
标签: json bash export-to-csv jq