Я получаю этот JSON как часть SQL-запроса и хочу создать вложенные объекты из составных свойств. Это можно сделать легко, если бы это был 1 элемент, но запрос MYSQL возвращает массив прямо в корень:
[
{
"idlicense": 1,
"StartDate": "2022-11-15 00:00:00.0",
"EndDate": "2022-11-29 00:00:00.0",
"MonthlySearchMax": 500,
"Customer_CustomerId": 0,
"Customer_Guid": "c24c1fa3-0388-4c08-b431-8d0f05fe263a",
"Customer_Name": "User",
"Customer_CustStartDate": "2022-11-15 00:00:00.0",
"Connector_ConnectorId": 0,
"Connector_Name": "connector0",
"Connector_Version": "1.01"
},
{
"idlicense": 2,
"StartDate": "2022-11-15 00:00:00.0",
"EndDate": "2022-11-29 00:00:00.0",
"MonthlySearchMax": 500,
"Customer_CustomerId": 0,
"Customer_Guid": "c24c1fa3-0388-4c08-b431-8d0f05fe263a",
"Customer_Name": "User",
"Customer_CustStartDate": "2022-11-15 00:00:00.0",
"Connector_ConnectorId": 1,
"Connector_Name": "connector1",
"Connector_Version": "1.01"
}
]
Я пытаюсь создать вложенный JSON с JOLT на NIFI, но не могу найти правильный формат, глядя на доступные примеры, и это кажется простым. Мне нужно, чтобы мой окончательный JSON выглядел так:
{
"Licenses": [
{
"idLicense": "1",
"Customer": {
"CustomerId": "0",
"Guid": "c24c1fa3-0388-4c08-b431-8d0f05fe263a",
"Name": "User",
"CustStartDate": "2022-11-15 00:00:00.0"
},
"Connector": {
"ConnectorId": "0",
"Name": "Connector0",
"Version": "1.01"
}
},
{
"idLicense": "2",
"Customers": {
"CustomerId": "1",
"Guid": "c24c1fa3-0388-4c08-b431-8d0f05fe263a",
"Name": "User",
"CustStartDate": "2022-11-15 00:00:00.0"
},
"Connector": {
"ConnectorId": "1",
"Name": "Connector1",
"Version": "1.01"
}
}
]
}
До сих пор я сделал это преобразование JOLT:
{
"idlicense": [1,2],
"Customer": {
"CustomerId": [0,0],
"Guid": ["c24c1fa3-0388-4c08-b431-8d0f05fe263a","c24c1fa3-0388-4c08-b431-8d0f05fe263a"],
"Name": ["User","User"],
"CustStartDate": ["2022-11-15 00:00:00.0","2022-11-15 00:00:00.0"]
},
"Connector": {
"ConnectorId": [0,1],
"Name": ["Conector0","Connector1"],
"Version": ["1.01","1.01"]
}
}
Спасибо за Вашу поддержку!
Вы можете использовать эту спецификацию преобразования сдвига
[
{
"operation": "shift",
"spec": {
"*": {
"idlicense": "Licenses[&1].&",
"*_*": "Licenses[&1].&(0,1).&(0,2)"
}
}
}
]
где &(0,1) представляет до, &(0,2) после символа подчеркивания
это зависит от случаев @FilipeMiguelFerreira, важно учитывать глубину дерева, учитывая проблему толчка. Дополнительный []
может быть добавлен для случаев, когда существует вероятность возврата только одного объекта/атрибута.
просто как вызов, иногда результат имеет [ ] в корне, иногда нет, в зависимости от существующих 1 или более результатов. Есть ли что-то условное, что мы можем сделать, чтобы решить эту проблему? Я пытаюсь избежать кода предварительной обработки.