我想根据一个JSON文件的内容过滤另一个JSON文件。
我想提取第一个JSON文件data.json
上的ID,使用以下jq:
jq '[.data[] | select(.attributes.closeReason == "Fraud")][:10] | [.[].relationships.customer.id]' data.json
这会产生类似于:
[
"621506",
"624722",
"631044",
"633359",
"699327",
"710710",
"711493",
"713413",
"713824",
"713903"
]
我想获取这些值并使用它们来匹配其他JSON的ID。
例如:
jq --argjson ids "$ARGS.positional[]" '.data[] | select(.id | IN($ids[]))' accounts.json
但我得到了错误:
jq: invalid JSON text passed to --argjson
我试过清除堆栈溢出,Phind.com,ChatGPT,但我还没有找到任何解决方案。
示例- JSON文件:
第一个JSON文件(提取客户ID)
[
{
"type": "depositAccount",
"id": "991231",
"attributes": {
"name": "William Heckerd",
"status": "Closed",
"closeReason": "Fraud",
"fraudReason": "ACHActivity",
"updatedAt": "2023-02-24T19:41:30.224Z"
},
"relationships": {
"customer": {
"data": {
"type": "customer",
"id": "123456"
}
},
}
},
]
}
第二个JSON文件-根据客户ID过滤出来:
{
"data": [
{
"type": "individualCustomer",
"id": "567898765",
"attributes": {
"createdAt": "2023-09-10T08:32:07.921Z",
"fullName": {
"first": "Foo",
"last": "Example"
},
"email": "[email protected]",
"status": "Archived",
"archiveReason": "FraudClientIdentified"
}
},
]
}
1条答案
按热度按时间tsm1rwdh1#
jq已经可以自己处理多个输入文件:
或者,如果你真的想调用jq的两个示例:
或者用一个中间变量: