Home > Blockchain >  How to merge object with same keys using JSONATA
How to merge object with same keys using JSONATA

Time:09-29

I have a JSON data array of objects and I want to prepare another array where object with matching keys get merge and there count value should add up. I am using JSONATA.

Input:

[
{
"name" : "t1",
"count": 1
},
{
"name":"t1",
"count": 2
},
{
"name":"t2",
"count": 4
},
]

Expected Output:

[
{
"name" : "t1",
"count": 3
},
{
{
"name" : "t2",
"count": 4
}
]

CodePudding user response:

Check out the reduce operator in docs: https://docs.jsonata.org/path-operators#---reduce and some grouping examples: https://docs.jsonata.org/sorting-grouping#grouping

After you have it aggregated into an object, $each function is a nice way to turn it back into an array: https://docs.jsonata.org/object-functions#each

$${ name: $sum(count) } 
  ~> $each(function($value, $key) {
    { "name": $key, "count": $value }
  })

Live example: https://stedi.link/1oARv4p

Keep in mind that you can also use the $reduce function and write all of your grouping logic inside if you prefer such code style: https://stedi.link/99gVGwm

  • Related