pacman
pacman

Reputation: 835

Insert a field from inner JSON to outer JSON with Jolt

I have a JSON like this

"Top1": {
          "top11": "top11",
          "top12": "top12",
          "Middle1": 
            {
              "middle11": "middle11",
              "middle12": "middle12",
            },
            Middle2": 
            {
              "middle21": "middle21",
              "middle22": "middle22",
              "Inner1":{

                 "inner11":"inner11"
                 "inner12":"inner12"
                        }
            }
}

How can I convert it like this

"Top1": {
          "top11": "top11",
          "top12": "top12",
          "Middle1": 
            {
              "middle11": "middle11",
              "middle12": "middle12",
               "inner11:"inner11"

            },
            Middle2": 
            {
              "middle21": "middle21",
              "middle22": "middle22",
              "Inner1":{

                 "inner12":"inner12"
                        }
            }
}

I only need the inner11 to be taken inside Middle1. How to achieve this with jolt. I tried using @ and [&] but this is only working when the innermost is an array and not a single object like this.

Upvotes: 0

Views: 89

Answers (1)

mattyb
mattyb

Reputation: 12083

Are those all known field names? If so you can use the following spec:

[
  {
    "operation": "shift",
    "spec": {
      "Top1": {
        "Middle1": {
          "@(1,Middle2.Inner1.inner11)": "Top1.Middle1.inner11",
          "*": "Top1.Middle1.&"
        },
        "Middle2": {
          "Inner1": {
            "inner11": null,
            "*": "Top1.Middle2.Inner1.&"
          },
          "*": "Top1.Middle2.&"
        },
        "*": "Top1.&"
      }
    }
  }
]

Upvotes: 1

Related Questions