bazaarvoice / jolt

JSON to JSON transformation library written in Java.
Apache License 2.0
1.54k stars 328 forks source link

How to convert multiple array #1130

Open ArsenyClean opened 2 years ago

ArsenyClean commented 2 years ago

I got

{
  "field1": [
    {
      "test1": "1",
      "test2": "2"
    },
    {
      "test1": "3",
      "test2": "4"
    }
  ],
  "field2": [
    {
      "test3": "5",
      "test4": "6"
    },
    {
      "test3": "7",
      "test4": "8"
    }
  ],
  "field3": [
    {
      "test5": "9",
      "test6": "10"
    },
    {
      "test5": "11",
      "test6": "12"
    }
  ],
  "field4": [
    {
      "test7": "13",
      "test8": "14"
    },
    {
      "test7": "15",
      "test8": "16"
    }
  ]
}

And need to convert it into one array

[
  {
    "field1_test1": "1",
    "field1_test2": "2",
    "field2_test3": null,
    "field2_test4": null,
    "field3_test5": null,
    "field3_test6": null,
    "field4_test7": null,
    "field4_test8": null
  },  {
  "field1_test1": "3",
  "field1_test2": "4",
  "field2_test3": null,
  "field2_test4": null,
  "field3_test5": null,
  "field3_test6": null,
  "field4_test7": null,
  "field4_test8": null
},  {
  "field1_test1": null,
  "field1_test2": null,
  "field2_test3": "5",
  "field2_test4": "6",
  "field3_test5": null,
  "field3_test6": null,
  "field4_test7": null,
  "field4_test8": null
},  {
  "field1_test1": null,
  "field1_test2": null,
  "field2_test3": "7",
  "field2_test4": "8",
  "field3_test5": null,
  "field3_test6": null,
  "field4_test7": null,
  "field4_test8": null
},  {
  "field1_test1": null,
  "field1_test2": null,
  "field2_test3": null,
  "field2_test4": null,
  "field3_test5": "9",
  "field3_test6": "10",
  "field4_test7": null,
  "field4_test8": null
},  {
  "field1_test1": null,
  "field1_test2": null,
  "field2_test3": null,
  "field2_test4": null,
  "field3_test5": "11",
  "field3_test6": "12",
  "field4_test7": null,
  "field4_test8": null
},  {
  "field1_test1": null,
  "field1_test2": null,
  "field2_test3": null,
  "field2_test4": null,
  "field3_test5": null,
  "field3_test6": null,
  "field4_test7": "13",
  "field4_test8": "14"
},  {
  "field1_test1": null,
  "field1_test2": null,
  "field2_test3": null,
  "field2_test4": null,
  "field3_test5": null,
  "field3_test6": null,
  "field4_test7": "15",
  "field4_test8": "16"
}
]    

or into

[
  {
    "field1_test1": "1",
    "field1_test2": "2",
    "field2_test3": "5",
    "field2_test4": "6",
    "field3_test5": "9",
    "field3_test6": "10",
    "field4_test7": "13",
    "field4_test8": "14"
  },  {
  "field1_test1": "3",
  "field1_test2": "4",
  "field2_test3": "7",
  "field2_test4": "8",
  "field3_test5": "11",
  "field3_test6": "12",
  "field4_test7": "15",
  "field4_test8": "16"
}
]
ouxuyong commented 2 years ago

@ArsenyClean This spec of mine can achieve the effect you want, I hope it can help you. In addition, there is a jolt tutorial project, welcome to communicate and discuss jolt-universe.

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "0": {
          "*": "[#2].&2_&0"
        },
        "1": {
          "*": "[#2].&2_&0"
        }
      }
    }
  }
]