Преобразование JOLT из Prefix Soup в Nested

Я получаю этот 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"]
  }
}

Спасибо за Вашу поддержку!

Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
0
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать эту спецификацию преобразования сдвига

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "idlicense": "Licenses[&1].&",
        "*_*": "Licenses[&1].&(0,1).&(0,2)"
      }
    }
  }
]

где &(0,1) представляет до, &(0,2) после символа подчеркивания

просто как вызов, иногда результат имеет [ ] в корне, иногда нет, в зависимости от существующих 1 или более результатов. Есть ли что-то условное, что мы можем сделать, чтобы решить эту проблему? Я пытаюсь избежать кода предварительной обработки.

Filipe Miguel Ferreira 26.11.2022 12:49

это зависит от случаев @FilipeMiguelFerreira, важно учитывать глубину дерева, учитывая проблему толчка. Дополнительный [] может быть добавлен для случаев, когда существует вероятность возврата только одного объекта/атрибута.

Barbaros Özhan 26.11.2022 12:55

Другие вопросы по теме