How do i split this url using jolt and bring the split part into result separately

25 views Asked by At

This is the input :

{
  "mobility-search-featureList": [
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-options?mobile-number=8877887788&appPatternFeatureId=3581"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-rmn?mobile-number=8877887788&appPatternFeatureId=3582"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-email?mobile-number=8877887788&appPatternFeatureId=3864"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-sr?mobile-number=8877887788&appPatternFeatureId=3865"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-order?mobile-number=8877887788&appPatternFeatureId=3866"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-disconnected-customer?mobile-number=8877887788&appPatternFeatureId=3867"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-customer-id?mobile-number=8877887788&appPatternFeatureId=3868"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-customer-number?mobile-number=8877887788&appPatternFeatureId=3869"
    }
  ]
}

This is the output I want :

{
  "mobility-search-featureList": [
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-options?mobile-number=8877887788&appPatternFeatureId=3581",
      "name": "search-options"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-rmn?mobile-number=8877887788&appPatternFeatureId=3582",
      "name": "search-rmn"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-email?mobile-number=8877887788&appPatternFeatureId=3864",
      "name": "search-email"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-sr?mobile-number=8877887788&appPatternFeatureId=3865",
      "name": "search-sr"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-order?mobile-number=8877887788&appPatternFeatureId=3866",
      "name": "search-order"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-disconnected-customer?mobile-number=8877887788&appPatternFeatureId=3867",
      "name": "search-disconnected-customer"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-customer-id?mobile-number=8877887788&appPatternFeatureId=3868",
      "name": "search-customer-id"
    },
    {
      "mobility-search-featureList-url": "/epsp-pattern/search/search-customer-number?mobile-number=8877887788&appPatternFeatureId=3869",
      "name": "search-customer-number"
    }
  ]
}

but I'm using this transformation

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "name": {
        "*": {
          "mobility-search-featureList-url": "=split('/', @(1))"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "name": {
        "\*": "=lastElement(@(1))"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "name": "name"
    }
  }
]

but doesn't return the result as expected.

1

There are 1 answers

0
Barbaros Özhan On

Yes, you should use split function witin a modify spec, but starting to split by ? firstly, and then lastElement should be used but like within the following case :

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "*": {
          "tmp1": "=split('\\?', @(1,mobility-search-featureList-url))",
          "tmp2": "=split('/',@(1,tmp1[0]))",
          "name": "=lastElement(@(1,tmp2))"
        }
      }
    }
  },
  { // get rid of the temporarily generated elements
    "operation": "remove",
    "spec": {
      "*": {
        "*": {
          "tmp*": ""
        }
      }
    }
  }
]

the demo on the site https://jolt-demo.appspot.com/ is :

enter image description here