I have an array of objects
[
{"ID":1, "Category": "A", "SubCategory": "AA", "SubSubCategory":"AAA", "SubSubSubCategory":"foo"},
{"ID":2, "Category": "A", "SubCategory": "AA", "SubSubCategory":"AAA", "SubSubSubCategory":"bar"},
{"ID":3, "Category": "A", "SubCategory": "AA", "SubSubCategory":"AAB", "SubSubSubCategory":"foo"},
{"ID":4, "Category": "A", "SubCategory": "AA", "SubSubCategory":"AAB", "SubSubSubCategory":"bar"},
{"ID":5, "Category": "A", "SubCategory": "AB", "SubSubCategory":"ABB", "SubSubSubCategory":"foo"},
{"ID":6, "Category": "A", "SubCategory": "AB", "SubSubCategory":"ABB", "SubSubSubCategory":"bar"},
{"ID":7, "Category": "A", "SubCategory": "BB", "SubSubCategory":"BAA", "SubSubSubCategory":"foo"},
{"ID":8, "Category": "A", "SubCategory": "BB", "SubSubCategory":"BAB", "SubSubSubCategory":"bar"},
{"ID":9, "Category": "B", "SubCategory": "AA", "SubSubCategory":"AAA", "SubSubSubCategory":"foo"},
{"ID":10, "Category": "B", "SubCategory": "AA", "SubSubCategory":"AAA", "SubSubSubCategory":"bar"},
{"ID":11, "Category": "B", "SubCategory": "AA", "SubSubCategory":"AAB", "SubSubSubCategory":"foo"},
{"ID":12, "Category": "B", "SubCategory": "AA", "SubSubCategory":"AAB", "SubSubSubCategory":"bar"},
{"ID":13, "Category": "B", "SubCategory": "AB", "SubSubCategory":"ABB", "SubSubSubCategory":"foo"},
{"ID":14, "Category": "B", "SubCategory": "AB", "SubSubCategory":"ABB", "SubSubSubCategory":"bar"},
{"ID":15, "Category": "B", "SubCategory": "BB", "SubSubCategory":"BAA", "SubSubSubCategory":"foo"},
{"ID":16, "Category": "B", "SubCategory": "BB", "SubSubCategory":"BAB", "SubSubSubCategory":"bar"},
]
which i need to convert into an array of objects where objects having same category, subcategory, subsubcategory are nested, like -
[
{
"name":"A",
"child": [
{
"name" : "AA",
"child" : [
{
"name" : "AAA",
"child": [
{"name":"foo"},
{"name":"bar"}
]
},
{
"name" : "AAB",
"child": [
{"name":"foo"},
{"name":"bar"}
]
}
]
},
{
"name" : "AB",
"child" : [
{
"name" : "ABB",
"child": [
{"name":"foo"},
{"name":"bar"}
]
}
]
},
{
"name" : "BB",
"child" : [
{
"name" : "BAA",
"child": [
{"name":"foo"}
]
},
{
"name" : "BAB",
"child": [
{"name":"bar"}
]
}
]
}
]
},
{
"name":"B",
"child": [
{
"name" : "AA",
"child" : [
{
"name" : "AAA",
"child": [
{"name":"foo"},
{"name":"bar"}
]
},
{
"name" : "AAB",
"child": [
{"name":"foo"},
{"name":"bar"}
]
}
]
},
{
"name" : "AB",
"child" : [
{
"name" : "ABB",
"child": [
{"name":"foo"},
{"name":"bar"}
]
}
]
},
{
"name" : "BB",
"child" : [
{
"name" : "BAA",
"child": [
{"name":"foo"}
]
},
{
"name" : "BAB",
"child": [
{"name":"bar"}
]
}
]
}
]
}
]
I am stuck here from last 2 days and not able to figure out a way to do it. I have gone through most of the similar questions but still not able to figure out a solution.
Any help would be appreciated. Thank you.