Jason Moore
Jason Moore

Reputation: 1

Jolt to transform a multilayered Nested JSON to flat JSON

Input

{
  "CustomerMaster": {
    "Rootnode": {
      "KUNNR": "0000000199",
      "NAME1": "COOP Sverige AB",
      "LAND1": "SE",
      "SalesArea": [
        {
          "VKORG": "1301",
          "VTWEG": "00",
          "SPART": "00",
          "PartnerFunction": [
            {
              "PARVW": "WE",
              "PARZA": "000",
              "KUNN2": "0000000199"
            },
            {
              "PARVW": "YP",
              "PARZA": "000",
              "KUNN2": "0087000579"
            },
            {
              "PARVW": "AG",
              "PARZA": "000",
              "KUNN2": "0000000199"
            },
            {
              "PARVW": "RE",
              "PARZA": "000",
              "KUNN2": "0000000199"
            },
            {
              "PARVW": "RG",
              "PARZA": "000",
              "KUNN2": "0000000199"
            },
            {
              "PARVW": "ZP",
              "PARZA": "000",
              "KUNN2": "0000000199"
            },
            {
              "PARVW": "Z0",
              "PARZA": "000",
              "KUNN2": "0000078178"
            }
          ]
        },
        {
          "VKORG": "1301",
          "VTWEG": "10",
          "SPART": "00",
          "Indicator": {
            "IsPlanAccount": "X",
            "IsDistributionCenter": "X"
          },
          "PartnerFunction": [
            {
              "PARVW": "YP",
              "PARZA": "000",
              "KUNN2": "0087000579"
            },
            {
              "PARVW": "WE",
              "PARZA": "000",
              "KUNN2": "0000000199"
            },
            {
              "PARVW": "AG",
              "PARZA": "000",
              "KUNN2": "0000000199"
            },
            {
              "PARVW": "ZP",
              "PARZA": "000",
              "KUNN2": "0000000199"
            },
            {
              "PARVW": "RG",
              "PARZA": "000",
              "KUNN2": "0000000199"
            },
            {
              "PARVW": "RE",
              "PARZA": "000",
              "KUNN2": "0000000199"
            },
            {
              "PARVW": "Z0",
              "PARZA": "000",
              "KUNN2": "0000078178"
            }
          ]
        },
        {
          "VKORG": "1330",
          "VTWEG": "00",
          "SPART": "00",
          "PartnerFunction": [
            {
              "PARVW": "ZP",
              "PARZA": "000",
              "KUNN2": "0090000100"
            },
            {
              "PARVW": "WE",
              "PARZA": "000",
              "KUNN2": "0000000199"
            },
            {
              "PARVW": "AG",
              "PARZA": "000",
              "KUNN2": "0000000199"
            },
            {
              "PARVW": "RG",
              "PARZA": "000",
              "KUNN2": "0000000199"
            },
            {
              "PARVW": "RE",
              "PARZA": "000",
              "KUNN2": "0000000199"
            }
          ]
        }
      ]
    }
  }
}

Expected Output:

[ {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "00",
  "SPART" : "00",
  "PARVW" : "WE",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "00",
  "SPART" : "00",
  "PARVW" : "YP",
  "PARZA" : "000",
  "KUNN2" : "0087000579"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "00",
  "SPART" : "00",
  "PARVW" : "AG",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "00",
  "SPART" : "00",
  "PARVW" : "RE",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "00",
  "SPART" : "00",
  "PARVW" : "RG",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "00",
  "SPART" : "00",
  "PARVW" : "ZP",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "00",
  "SPART" : "00",
  "PARVW" : "Z0",
  "PARZA" : "000",
  "KUNN2" : "0000078178"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "10",
  "SPART" : "00",
  "IsPlanAccount" : "X",
  "IsDistributionCenter" : "X",
  "PARVW" : "YP",
  "PARZA" : "000",
  "KUNN2" : "0087000579"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "10",
  "SPART" : "00",
  "IsPlanAccount" : "X",
  "IsDistributionCenter" : "X",
  "PARVW" : "WE",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "10",
  "SPART" : "00",
  "IsPlanAccount" : "X",
  "IsDistributionCenter" : "X",
  "PARVW" : "AG",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "10",
  "SPART" : "00",
  "IsPlanAccount" : "X",
  "IsDistributionCenter" : "X",
  "PARVW" : "ZP",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "10",
  "SPART" : "00",
  "IsPlanAccount" : "X",
  "IsDistributionCenter" : "X",
  "PARVW" : "RG",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "10",
  "SPART" : "00",
  "IsPlanAccount" : "X",
  "IsDistributionCenter" : "X",
  "PARVW" : "RE",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1301",
  "VTWEG" : "10",
  "SPART" : "00",
  "IsPlanAccount" : "X",
  "IsDistributionCenter" : "X",
  "PARVW" : "Z0",
  "PARZA" : "000",
  "KUNN2" : "0000078178"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1330",
  "VTWEG" : "00",
  "SPART" : "00",
  "PARVW" : "ZP",
  "PARZA" : "000",
  "KUNN2" : "0090000100"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1330",
  "VTWEG" : "00",
  "SPART" : "00",
  "PARVW" : "WE",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1330",
  "VTWEG" : "00",
  "SPART" : "00",
  "PARVW" : "AG",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1330",
  "VTWEG" : "00",
  "SPART" : "00",
  "PARVW" : "RG",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
}, {
  "KUNNR" : "0000000199",
  "NAME1" : "COOP Sverige AB",
  "LAND1" : "SE",
  "VKORG" : "1330",
  "VTWEG" : "00",
  "SPART" : "00",
  "PARVW" : "RE",
  "PARZA" : "000",
  "KUNN2" : "0000000199"
} ]

I'm trying to write a spec to do the below transformation using jolt transformation. I need to convert the flat json to nested Json

I am having some trouble with converting the flat JSON to Nested JSON. I have looked at examples and didn't get any closer as to what is mentioned above. I need to transform a JSON structure by using a JOLT spec. I use https://jolt-demo.appspot.com to test the following below.

Upvotes: 0

Views: 64

Answers (1)

Barbaros Özhan
Barbaros Özhan

Reputation: 65408

You can nest outermost objects into common objects such as else1 and else2 within the first shift transformation spec, and then accumulate within the second one as in the below case :

[
  {
    "operation": "shift",
    "spec": {
      "CustomerMaster": {
        "Rootnode": {
          "*": "else1.&",
          "SalesArea": {
            "*": {
              "*": "&1.else2.&",
              "PartnerFunction": {
                "*": {
                  "*": "&3.&2[&1].&"
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "PartnerFunction": {
          "*": {
            "@3,else1": { "*": "&4[&1].&" },
            "@2,else2": { "*": "&4[&1].&" },
            "*": "&3[&1].&"
          }
        }
      }
    }
  },
  { //get rid of the outermost keys
    "operation": "shift",
    "spec": {
      "*": {
        "*": ""
      }
    }
  }
]

Upvotes: 0

Related Questions