Home > other >  What kind of JSON JOLT Spec to get key-value output where key is a data value and value is an array
What kind of JSON JOLT Spec to get key-value output where key is a data value and value is an array

Time:12-15

I'm trying to find a spec array that yields the desired output

Input:

{
  "aggregations": {
    "masterId": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "1Q52",
          "doc_count": 3,
          "serialNumbers": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
              {
                "key": "3R24Z3",
                "count": 1
              },
              {
                "key": "526GA2",
                "count": 1
              },
              {
                "key": "873XHE",
                "count": 1
              }
            ]
          }
        }
      ]
    }
  }
}

Spec: Trying to figure this out

Desired Output:

{
  "1Q52": ["3R24Z3", "526GA2", "873XHE"]
}

My current Spec array is

[
  {
    "operation": "shift",
    "spec": {
      "aggregations": {
        "masterId": {
          "buckets": {
            "*": {
              "key": "key",
              "serialNumbers": {
                "buckets": {
                  "*": {
                    "key": "key"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

and my current output is

{
  "key" : [ "1Q52", "3R24Z3", "526GA2", "873XHE" ]
}

What kind of spec array could give me the desired output?

CodePudding user response:

You can go 4 level up and grab the value to be the key for the array by using "key": "@(4,key)" such as

[
  {
    "operation": "shift",
    "spec": {
      "aggregations": {
        "masterId": {
          "buckets": {
            "*": {
              "serialNumbers": {
                "buckets": {
                  "*": {
                    "key": "@(4,key)"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

where : and then triple { character traverse is counted in order to reach the desired key value.

enter image description here

  • Related