我有以下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"
}
]
}我想用Customers加入Reservations,并获得如下内容:
{
"ReservationId": "R-1",
"CustomerName": "customer 1"
}
{
"ReservationId": "R-2",
"CustomerName": "customer 2"
}我尝试过大量使用jq,尝试使用逗号分隔的多个过滤器,尝试使用变量,阅读文档,但似乎使用jq无法完成如此简单的任务。或者,我错过了什么吗?
发布于 2019-02-04 05:17:51
下面是一个使用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复制并粘贴它的def,或者您可以使用下面定义的INDEX/3。
索引/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] }https://stackoverflow.com/questions/54506913
复制相似问题