我有一个类似的问题:
我想转换以下输入:
[
{
"name": "Product A",
"price": 10,
"color": "green",
"category": "fruit",
"id": 1
},
{
"name": "Product A",
"price": 20,
"color": "yellow",
"category": "fruit",
"id": 1
},
{
"name": "Product B",
"price": 30,
"color": "blue",
"category": "vegetable",
"id": 2
}
]
在此输出中:
[
"product_1" : {
"name": "Product A",
"price": [10,20],
"color": ["green", "yellow"],
"category": "fruit",
"id": 1
},
"product_2" : {
"name": "Product B",
"price": 30,
"color": "blue",
"category": "vegetable",
"id": 2
}
]
在上面的输入中,前两个对象是相似的,具有相同的名称,类别和id,所以我将它们合并到一个对象中。有2个字段是不同的,即价格和颜色。所以我创建这些字段的数组并将它们放入合并的对象中。
我尝试了以下方法:
[
{
"operation": "shift",
"spec": {
"*": {
"id": {
"*": {
"@2": "&[]"
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
// "*": {
// "price": "product_&2.price",
// "color": "product_&2.color"
// }
//,
"0": {
"name": "product_&2.name",
"category": "product_&2.category",
"id": "product_&2.id"
}
}
}
}
]
但是我可以得到不同字段的数组,或者是具有相似字段的对象,但是我不能同时得到这两个。
1条答案
按热度按时间py49o6xq1#
可以应用双shift转换:在第一步骤中;具有公共
id
值的对象在公共数组元素内和第二数组元素中组合;公共键的值被组合在一起。但是,仍然需要一个包含基数转换的步骤,以便消除某些键的重复元素(在本例中为name
,category
和id
),例如