Как объединить данные JSON с помощью Jolt по двум ключам?
Если у меня есть ввод списка объектов JSON. Как мне вложить данные в Java по дате, а затем в категорию, а также отсортировать их по дате в порядке убывания?
Входные данные :
{ "data":[{
"date": "2015-02-26",
"buyer": "Ryan",
"category": "clothes",
"quantity":"10.0"
},
{
"date": "2015-02-18",
"buyer": "Lisa",
"category": "food",
"quantity": "2.0"
},
{
"date": "2015-02-18",
"buyer": "Brian",
"category": "food",
"quantity": "11.0",
},
{
"date": "2015-02-26",
"buyer": "Jim",
"category": "clothes",
"quantity": "20.0",
},
{
"date": "2015-02-26",
"buyer": "Tom",
"category": "food",
"quantity": "40.0",
},
{
"date": "2015-02-18",
"buyer": "Alyssa",
"category": "clothes",
"quantity": "13.0",
}]
}
Вы можете увидеть в моем выводе ниже, что я пытаюсь сгруппировать данные сначала по дате, а затем по дате, которую я хочу сгруппировать по категориям.
Желаемый результат:
{
"2015-02-26”:{
“clothes”:[{
"date": "2015-02-26",
"buyer": "Ryan",
"category": "clothes",
"quantity":"10.0"
},
{
"date": "2015-02-26",
"buyer": "Jim",
"category": "clothes",
"quantity": "20.0",
}],
"food":[{
"date": "2015-02-26",
"buyer": "Tom",
"category": "food",
"quantity": "40.0",
}]
}
"2015-02-18":{
“clothes”:[{
"date": "2015-02-18",
"buyer": "Alyssa",
"category": "clothes",
"quantity": "13.0",
}],
"food":[{
"date": "2015-02-18",
"buyer": "Lisa",
"category": "food",
"quantity": "2.0"
},
{
"date": "2015-02-18",
"buyer": "Brian",
"category": "food",
"quantity": "11.0",
}]
}
}
1 ответ
Решение
Удивительно легко.
спекуляция
[
{
"operation": "shift",
"spec": {
"data": {
// Ex. send the first data item to
// 2015-02-26.clothes[]
// where we want clothes to always be an array
// even if it only got one value assigned to it.
"*": "@(0,date).@(0,category)[]"
}
}
}
]