Here is the example of the list of objects that are retrieved from database.
<code>[
{
"name": "auto.start",
"value": "false",
"group": "",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Auto Start",
"categoryName": "Category 1"
},
{
"name": "user.dark.mode.enabled",
"value": "false",
"group": "",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Dark mode",
"categoryName": "Category 1"
},
{
"name": "group1.setting1",
"value": "true",
"group": "Group 1",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Group 1 setting 1 name",
"categoryName": "Category 2"
},
{
"name": "group1.setting2",
"value": "2",
"group": "Group 1",
"description": "Description....",
"inputConfig": {
"max": "10000",
"min": "1",
"type": "number",
"prefix": "",
"suffix": "hr"
},
"title": "Group 1 setting 2 name",
"categoryName": "Category 2"
},
{
"name": "group2.setting1.2",
"value": "10",
"group": "Group 2",
"description": "Description....",
"inputConfig": {
"max": "10000",
"min": "1",
"type": "number",
"prefix": "",
"suffix": "d"
},
"title": "Group 2 setting 1 name",
"categoryName": "Category 2"
},
{
"name": "group2.setting1.1",
"value": "true",
"group": "Group 2",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Group 2 setting 1 name",
"categoryName": "Category 2"
},
{
"name": "group2.setting2.2",
"value": "5",
"group": "Group 2",
"description": "Description....",
"inputConfig": {
"max": "10000",
"min": "1",
"type": "number",
"prefix": "",
"suffix": "d"
},
"title": "Group 2 setting 2 name",
"categoryName": "Category 2"
},
{
"name": "group2.setting2.1",
"value": "true",
"group": "Group 2",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Group 2 setting 2 name",
"categoryName": "Category 2"
}
]
</code>
<code>[
{
"name": "auto.start",
"value": "false",
"group": "",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Auto Start",
"categoryName": "Category 1"
},
{
"name": "user.dark.mode.enabled",
"value": "false",
"group": "",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Dark mode",
"categoryName": "Category 1"
},
{
"name": "group1.setting1",
"value": "true",
"group": "Group 1",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Group 1 setting 1 name",
"categoryName": "Category 2"
},
{
"name": "group1.setting2",
"value": "2",
"group": "Group 1",
"description": "Description....",
"inputConfig": {
"max": "10000",
"min": "1",
"type": "number",
"prefix": "",
"suffix": "hr"
},
"title": "Group 1 setting 2 name",
"categoryName": "Category 2"
},
{
"name": "group2.setting1.2",
"value": "10",
"group": "Group 2",
"description": "Description....",
"inputConfig": {
"max": "10000",
"min": "1",
"type": "number",
"prefix": "",
"suffix": "d"
},
"title": "Group 2 setting 1 name",
"categoryName": "Category 2"
},
{
"name": "group2.setting1.1",
"value": "true",
"group": "Group 2",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Group 2 setting 1 name",
"categoryName": "Category 2"
},
{
"name": "group2.setting2.2",
"value": "5",
"group": "Group 2",
"description": "Description....",
"inputConfig": {
"max": "10000",
"min": "1",
"type": "number",
"prefix": "",
"suffix": "d"
},
"title": "Group 2 setting 2 name",
"categoryName": "Category 2"
},
{
"name": "group2.setting2.1",
"value": "true",
"group": "Group 2",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Group 2 setting 2 name",
"categoryName": "Category 2"
}
]
</code>
[
{
"name": "auto.start",
"value": "false",
"group": "",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Auto Start",
"categoryName": "Category 1"
},
{
"name": "user.dark.mode.enabled",
"value": "false",
"group": "",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Dark mode",
"categoryName": "Category 1"
},
{
"name": "group1.setting1",
"value": "true",
"group": "Group 1",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Group 1 setting 1 name",
"categoryName": "Category 2"
},
{
"name": "group1.setting2",
"value": "2",
"group": "Group 1",
"description": "Description....",
"inputConfig": {
"max": "10000",
"min": "1",
"type": "number",
"prefix": "",
"suffix": "hr"
},
"title": "Group 1 setting 2 name",
"categoryName": "Category 2"
},
{
"name": "group2.setting1.2",
"value": "10",
"group": "Group 2",
"description": "Description....",
"inputConfig": {
"max": "10000",
"min": "1",
"type": "number",
"prefix": "",
"suffix": "d"
},
"title": "Group 2 setting 1 name",
"categoryName": "Category 2"
},
{
"name": "group2.setting1.1",
"value": "true",
"group": "Group 2",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Group 2 setting 1 name",
"categoryName": "Category 2"
},
{
"name": "group2.setting2.2",
"value": "5",
"group": "Group 2",
"description": "Description....",
"inputConfig": {
"max": "10000",
"min": "1",
"type": "number",
"prefix": "",
"suffix": "d"
},
"title": "Group 2 setting 2 name",
"categoryName": "Category 2"
},
{
"name": "group2.setting2.1",
"value": "true",
"group": "Group 2",
"description": "Description....",
"inputConfig": {
"type": "boolean"
},
"title": "Group 2 setting 2 name",
"categoryName": "Category 2"
}
]
I would like to transform the list of objects into a specific structure which is to be sent as a response to client. The structure is as shown below:
<code>[
{
"categoryName": "Category 1",
"categorySettings": [
{
"group": "",
"groupSettings": [
{
"title": "Auto Start",
"description": "Description....",
"settingInputs": [
{
"name": "user.option",
"value": "false",
"inputConfig": {
"type": "boolean"
}
}
]
},
{
"title": "Dark mode",
"description": "Description....",
"settingInputs": [
{
"name": "user.dark.mode.enabled",
"value": "false",
"inputConfig": {
"type": "boolean"
}
}
]
}
]
}
]
},
{
"categoryName": "Category 2",
"categorySettings": [
{
"group": "Group 1",
"groupSettings": [
{
"title": "Group 1 setting 1 name",
"description": "Description....",
"settingInputs": [
{
"name": "group1.setting1",
"value": "true",
"inputConfig": {
"type": "boolean"
}
}
]
},
{
"title": "Group 1 setting 2 name",
"description": "Description....",
"settingInputs": [
{
"name": "group1.setting2",
"value": "2",
"inputConfig": {
"type": "number",
"prefix": "",
"suffix": "hr",
"min": "0",
"max": "10000"
}
}
]
}
]
},
{
"group": "Group 2",
"groupSettings": [
{
"title": "Group 2 setting 1 name",
"description": "Description....",
"settingInputs": [
{
"name": "group2.setting1.1",
"value": "true",
"inputConfig": {
"type": "boolean"
}
},
{
"name": "group2.setting1.2",
"value": "10",
"inputConfig": {
"type": "number",
"prefix": "",
"suffix": "d",
"min": "1",
"max": "10000"
}
}
]
},
{
"title": "Group 2 setting 2 name",
"description": "Description....",
"settingInputs": [
{
"name": "group2.setting2.1",
"value": "true",
"inputConfig": {
"type": "boolean"
}
},
{
"name": "group2.setting2.2",
"value": "5",
"inputConfig": {
"type": "number",
"prefix": "",
"suffix": "d",
"min": "1",
"max": "10000"
}
}
]
}
]
}
]
}
]
</code>
<code>[
{
"categoryName": "Category 1",
"categorySettings": [
{
"group": "",
"groupSettings": [
{
"title": "Auto Start",
"description": "Description....",
"settingInputs": [
{
"name": "user.option",
"value": "false",
"inputConfig": {
"type": "boolean"
}
}
]
},
{
"title": "Dark mode",
"description": "Description....",
"settingInputs": [
{
"name": "user.dark.mode.enabled",
"value": "false",
"inputConfig": {
"type": "boolean"
}
}
]
}
]
}
]
},
{
"categoryName": "Category 2",
"categorySettings": [
{
"group": "Group 1",
"groupSettings": [
{
"title": "Group 1 setting 1 name",
"description": "Description....",
"settingInputs": [
{
"name": "group1.setting1",
"value": "true",
"inputConfig": {
"type": "boolean"
}
}
]
},
{
"title": "Group 1 setting 2 name",
"description": "Description....",
"settingInputs": [
{
"name": "group1.setting2",
"value": "2",
"inputConfig": {
"type": "number",
"prefix": "",
"suffix": "hr",
"min": "0",
"max": "10000"
}
}
]
}
]
},
{
"group": "Group 2",
"groupSettings": [
{
"title": "Group 2 setting 1 name",
"description": "Description....",
"settingInputs": [
{
"name": "group2.setting1.1",
"value": "true",
"inputConfig": {
"type": "boolean"
}
},
{
"name": "group2.setting1.2",
"value": "10",
"inputConfig": {
"type": "number",
"prefix": "",
"suffix": "d",
"min": "1",
"max": "10000"
}
}
]
},
{
"title": "Group 2 setting 2 name",
"description": "Description....",
"settingInputs": [
{
"name": "group2.setting2.1",
"value": "true",
"inputConfig": {
"type": "boolean"
}
},
{
"name": "group2.setting2.2",
"value": "5",
"inputConfig": {
"type": "number",
"prefix": "",
"suffix": "d",
"min": "1",
"max": "10000"
}
}
]
}
]
}
]
}
]
</code>
[
{
"categoryName": "Category 1",
"categorySettings": [
{
"group": "",
"groupSettings": [
{
"title": "Auto Start",
"description": "Description....",
"settingInputs": [
{
"name": "user.option",
"value": "false",
"inputConfig": {
"type": "boolean"
}
}
]
},
{
"title": "Dark mode",
"description": "Description....",
"settingInputs": [
{
"name": "user.dark.mode.enabled",
"value": "false",
"inputConfig": {
"type": "boolean"
}
}
]
}
]
}
]
},
{
"categoryName": "Category 2",
"categorySettings": [
{
"group": "Group 1",
"groupSettings": [
{
"title": "Group 1 setting 1 name",
"description": "Description....",
"settingInputs": [
{
"name": "group1.setting1",
"value": "true",
"inputConfig": {
"type": "boolean"
}
}
]
},
{
"title": "Group 1 setting 2 name",
"description": "Description....",
"settingInputs": [
{
"name": "group1.setting2",
"value": "2",
"inputConfig": {
"type": "number",
"prefix": "",
"suffix": "hr",
"min": "0",
"max": "10000"
}
}
]
}
]
},
{
"group": "Group 2",
"groupSettings": [
{
"title": "Group 2 setting 1 name",
"description": "Description....",
"settingInputs": [
{
"name": "group2.setting1.1",
"value": "true",
"inputConfig": {
"type": "boolean"
}
},
{
"name": "group2.setting1.2",
"value": "10",
"inputConfig": {
"type": "number",
"prefix": "",
"suffix": "d",
"min": "1",
"max": "10000"
}
}
]
},
{
"title": "Group 2 setting 2 name",
"description": "Description....",
"settingInputs": [
{
"name": "group2.setting2.1",
"value": "true",
"inputConfig": {
"type": "boolean"
}
},
{
"name": "group2.setting2.2",
"value": "5",
"inputConfig": {
"type": "number",
"prefix": "",
"suffix": "d",
"min": "1",
"max": "10000"
}
}
]
}
]
}
]
}
]
How can I do such transformation as there are multiple nested to handle and the objects have to be grouped based on the value of “categoryName”, “group” and “title”?