jolt трансформация из плоской структуры в массив

Рейтинг: 0Ответов: 2Опубликовано: 20.01.2023

у меня есть json, плоская структура мне нужно его часть выделит в массив а остальную сохранить и оставить плоской. Вот исходная структура:

{
  "NAME": "COMPANY",
  "GUID": "ZT1111111",
  "ADRID": "00000000219",
  "TYPE": "XXXXX25LT",
  "COUNTRY": "KZ",
  "CITY": null,
  "STREET": "-   ",
  "HOME": null,
  "ZIP": null
}

Хочу получить:

{
    "NAME": "COMPANY",
    "GUID": "ZT1111111",
    "ADRID": "00000000219",
    "Adresses": [
        {
            "TYPE": "XXXXX25LT",
            "COUNTRY": "KZ",
            "CITY": null,
            "STREET": "-",
            "HOME": null,
            "ZIP": null
        }
    ]
}

Пробывал такую схему:

[
  {
    "operation": "shift",
    "spec": {
      "NAME": "NAME",
      "GUID": "GUID",
      "ADRID": "Addresses[].AdrId",
      "TYPE": "Addresses[].Type",
      "COUNTRY": "Addresses[].Country",
      "CITY": "Addresses[].City",
      "STREET": "Addresses[].Street",
      "HOME": "Addresses[].Home",
      "ZIP": "Addresses[].Zip"
    }
  }]

Но она преобразует каждый элемент :

{
  "NAME" : "COMPANY",
  "GUID" : "ZT1111111",
  "Addresses" : [ {
    "AdrId" : "00000000219"
  }, {
    "Type" : "XXXXX25LT"
  }, {
    "Country" : "KZ"
  }, {
    "City" : null
  }, {
    "Street" : "-   "
  }, {
    "Home" : null
  }, {
    "Zip" : null
  } ]
}

Просьба помочь!

Ответы

▲ 0Принят

Схема оказалась очень простой:

[
  {
    "operation": "shift",
    "spec": {
      "NAME": "NAME",
      "GUID": "GUID",
      "ADRID": "Addresses[0].AdrId",
      "TYPE": "Addresses[0].Type",
      "COUNTRY": "Addresses[0].Country",
      "CITY": "Addresses[0].City",
      "STREET": "Addresses[0].Street",
      "HOME": "Addresses[0].Home",
      "ZIP": "Addresses[0].Zip"
    }
  }]
▲ 1

возможно не совсем тот инструмент, но если не принципиально то такое легко можно сделать с помощью той же утилиты jq :

jq '{NAME,GUID,ADRID,Adresses: [{TYPE,COUNTRY,CITY,STREET,HOME,ZIP}]}'