我有以下JSON结构:
{
"Reservations": [
{
"Id": "R-1",
"CustomerId": "1"
},
{
"Id": "R-2",
"CustomerId": "2"
}
],
"Customers": [
{
"Id": "1",
"Name": "customer 1"
},
{
"Id": "2",
"Name": "customer 2"
},
{
"Id": "3",
"Name": "customer 3"
}
]
}
我想加入Reservations
与Customers
和得到的东西是这样的:
{
"ReservationId": "R-1",
"CustomerName": "customer 1"
}
{
"ReservationId": "R-2",
"CustomerName": "customer 2"
}
我已经打了jq
广泛,使用逗号分隔的多个过滤器试图使用变量,阅读文档试过,但似乎在做这样一个简单的任务是不可能的jq
。或者说,我失去的东西吗?
下面是使用INDEX/2
一个简单的解决方案:
INDEX(.Customers[]; .Id) as $c
| .Reservations[]
| { ReservationId: .Id,
CustomerName: $c[.CustomerId].Name }
如果您的JQ没有INDEX/2
那么现在是升级的好时机;否则,你可以从https://github.com/stedolan/jq/blob/master/src/builtin.jq复制和粘贴的闪避,或者按照下面的定义,你可以使用INDEX/3
。
def INDEX(s; k; v):
reduce s as $x ({}; .[$x|k] = ($x|v));
INDEX(.Customers[]; .Id; .Name) as $c
| .Reservations[]
| { ReservationId: .Id,
CustomerName: $c[.CustomerId] }