JOLT TRANSFORM в случаях Json List / Array

Я пытался выполнить JOLT Transform, но столкнулся с некоторыми трудностями при написании спецификации для него. Я хочу переместить некоторые элементы json из одного списка в другой.

INPUT JSON
{
  "billingsystem": {
    "request": {
      "profile": {
        "identification_details": [
          {
            "identification_type": "1",
            "identification_number": "4321221",
            "id_issue_date": "11/11/2014",
            "id_expiry_date": "11/11/2040",
            "issuer_id": "vx",
            "comment": "other"
          }
        ],
        "addresses": [
          {
            "language_id": "1",
            "subscriber_level": "0",
            "address_type": "0",
            "addr_line1": "13 B, Sea View",
            "addr_line2": "3rd Cross",
            "addr_line3": "Chicago",
            "addr_line4": "Illinois",
            "addr_line5": "60601",
            "country_id": "1"
          }
        ]
      }
    }
  }
}

Я хочу изменить это на данный выходной json. Мне нужна спецификация, с помощью которой я могу решить проблему. Нужна спецификация, которая касается

OUTPUT JSON
{
  "billingsystem": {
    "request": {
      "profile": {
        "identification_details": [
          {
            "identification_type": "1",
            "identification_number": "4321221",
            "id_issue_date": "11/11/2014",
            "id_expiry_date": "11/11/2040",
            "issuer_id": "vx",
            "comment": "other",
            "addr_line3": "Chicago",
            "addr_line4": "Illinois",
            "addr_line5": "60601",
            "country_id": "1"
          }
        ],
        "addresses": [
          {
            "language_id": "1",
            "subscriber_level": "0",
            "address_type": "0",
            "addr_line1": "13 B, Sea View",
            "addr_line2": "3rd Cross",

          }
        ]
      }
    }
  }
}

person Bruce wayne - The Geek Killer    schedule 14.02.2020    source источник


Ответы (1)


самое главное, когда вы работаете с массивами (в толчке) индексов, откуда и куда вы хотите сместить параметры, а также зная о "@, *, (index)", это поможет вам выйти оттуда

решение - спецификация:

[
  {
    "operation": "shift",
    "spec": {
      "billingsystem": {
        "request": {
          "profile": {
            "addresses": {
              "*": {
                "language_id": "request.profile.addresses[&1].language_id",
                "subscriber_level": "request.profile.addresses[&1].subscriber_level",
                "address_type": "request.profile.addresses[&1].address_type",
                "addr_line1": "request.profile.addresses[&1].addr_line1",
                "addr_line2": "request.profile.addresses[&1].addr_line2"
              }
            },
            "identification_details": {
              "*": {
                "identification_type": "request.profile.identification_details[&1].identification_type",
                "identification_number": "request.profile.identification_details[&1].identification_number",
                "id_issue_date": "request.profile.identification_details[&1].id_issue_date",
                "id_expiry_date": "request.profile.identification_details[&1].id_issue_date",
                "issuer_id": "request.profile.identification_details[&1].id_expiry_date",
                "comment": "request.profile.identification_details[&1].comment",
                "@(2,addresses[&].addr_line3)": "request.profile.identification_details[&1].addr_line3",
                "@(2,addresses[&].addr_line4)": "request.profile.identification_details[&1].addr_line4",
                "@(2,addresses[&].addr_line5)": "request.profile.identification_details[&1].addr_line5"
              }
            }
          }
        }
      }
    }
  }

  ]
person venkateswara reddy    schedule 17.02.2020