I have an array of json objects as shown below.
[
{
"wrappedItem": {
"systemName": "jira",
"domainObject": "issue",
"eventType": "creation"
},
"id": 39,
"enabled": true
},
{
"wrappedItem": {
"systemName": "jira",
"domainObject": "issue",
"eventType": "predeletion"
},
"id": 40,
"enabled": true
},
{
"wrappedItem": {
"systemName": "jira",
"domainObject": "issue",
"eventType": "deletion"
},
"id": 41,
"enabled": true
},
{
"wrappedItem": {
"systemName": "jira",
"domainObject": "issue",
"eventType": "update"
},
"id": 42,
"enabled": true
},
{
"wrappedItem": {
"systemName": "jira",
"domainObject": "recquirement",
"eventType": "new"
},
"id": 43,
"enabled": true
},
{
"wrappedItem": {
"systemName": "jira",
"domainObject": "recquirement",
"eventType": "old"
},
"id": 44,
"enabled": true
},
{
"wrappedItem": {
"systemName": "bitbucket",
"domainObject": "branch",
"eventType": "creation"
},
"id": 45,
"enabled": true
},
{
"wrappedItem": {
"systemName": "bitbucket",
"domainObject": "branch",
"eventType": "deletion"
},
"id": 46,
"enabled": true
},
{
"wrappedItem": {
"systemName": "bitbucket",
"domainObject": "pull-request",
"eventType": "creation"
},
"id": 47,
"enabled": true
}
]
If you closely observe the data above, you can see that the data can be grouped based on the systemName, followed by the domainObject, followed by eventType.
I want to display the data into a tree like fashion. For this, I have decided to use angular-ui-tree third party library. It expects the json object to be in a certain way. (Please go to that link to see the structure of the json object it needs).
I have a requirement where I have to convert my data into a structure needed by the angular-ui-tree so that I can display my data as a tree.
Eventually, I am expecting the json object to look like :
[
{
"systemName": "jira",
"domains": [
{
"domainObject": "issue",
"eventTypes": [
{
"eventType": "creation",
"id": 39,
"enabled": true
},
{
"eventType": "pre-deletion",
"id": 40,
"enabled": true
},
{
"eventType": "deletion",
"id": 41,
"enabled": true
},
{
"eventType": "issue",
"id": 42,
"enabled": true
}
]
},
{
"domainObject": "requirement",
"eventTypes": [
{
"eventType": "new",
"id": 43,
"enabled": true
},
{
"eventType": "old",
"id": 44,
"enabled": true
}
]
}
]
},
{
"systemName": "bitbucket",
"domains": [
{
"domainObject": "branch",
"eventTypes": [
{
"eventType": "creation",
"id": 45,
"enabled": true
},
{
"eventType": "deletion",
"id": 46,
"enabled": true
}
]
},
{
"domainObject": "pull-request",
"eventTypes": [
{
"eventType": "creation",
"id": 47,
"enabled": true
}
]
}
]
}
]
As you can see this data is grouped by systemName, followed by domainObject and followed by eventType.
Can someone help me in converting my data in the structure shown above.