我需要转换JSON以更新Firebase Firestore。
我传入的json看起来像这样:
[{
"ItemID": 1,
"Size": 10,
"Price": 5
},
{
"ItemID": 1,
"Size": 11,
"Price": 7
},
{
"ItemID": 1,
"Size": 12,
"Price": 10
},
{
"ItemID": 2,
"Size": 11,
"Price": 15
},
{
"ItemID": 2,
"Size": 12,
"Price": 20
}]
而且我需要JSON看起来像这样:
[{
"ItemID": 1,
"Price": {
"10": 5,
"11": 7,
"12": 10
}
},
{
"ItemID": 2,
"Price": {
"11": 15,
"12": 20
}
}]
请问我需要什么jq过滤器?
我的其他选择是在javascript中循环访问,但是我想使它可扩展,以便可以添加,保存和运行模式。
我的另一种选择是不将值存储为键,而是执行以下操作:
[
{
"ItemID":1,
"Prices":[
{"Size":10, "Price":5}
]
}
]
答案 0 :(得分:1)
修复JSON之后,以下过滤器将产生如下所示的输出:
group_by(.ItemID)
| map( reduce .[] as $x ( .[0] | {ItemID};
.Price += ($x | {(.Size|tostring): .Price}) ) )
输出:
[
{
"ItemID": 1,
"Price": {
"10": 5,
"11": 7,
"12": 10
}
},
{
"ItemID": 2,
"Price": {
"11": 15,
"12": 20
}
}
]