Данные таблицы:
id name ob_name parent level type_id type_name
1 Objective 1 ob Objective 1 name [NULL] 0 1 Objective
11 Objective 3 Ob objective 3 name [NULL] 0 1 Objective
13 Objective 4 ob Objective 4 [NULL] 0 1 Objective
2 Key Result 1-1 Kr Key result 1-1 1 1 2 Keyresult
3 Kwyresult 1-2 Kr Key result 1-2 name 1 1 2 Keyresult
9 Key result 2 Kr Key result 2 name [NULL] 1 2 Keyresult
12 Key Result 3 Kr Key result 3 name 11 1 2 Keyresult
4 Initiative 1-1-1 In Initiative 1-1-1 name 2 2 3 Initiative
5 Inititative 1-1-2 In Initiative 1-1-2 name 2 2 3 Initiative
6 Initiative 1-1-3 In Initiative 1-1-3 name 2 2 3 Initiative
7 Inititative 1-2-1 In Initiative 1-2-1 name 3 2 3 Initiative
8 Inititative 1-2-2 In Initiative 1-2-2 name 3 2 3 Initiative
10 Initiative 2 In Initiative 2 name 9 2 3 Initiative
14 Initiative 4 In Initiative 4 name 13 2 3 Initiative
15 Initiative Standalone In initiative Standalone name [NULL] 2 3 Initiative
Мне нужен ожидаемый вывод json
{
Objectives: [
{
id: 1,
name: 'Objective 1',
ob_name: 'ob Objective 1 name',
parent: null,
level: 0,
type_id: 1,
type_name: 'Objective',
Keyresults: [
{
id: 2,
name: 'Key Result 1-1',
ob_name: 'Kr Key result 1-1',
parent: 1,
level: 1,
type_id: 2,
type_name: 'Keyresult',
Initiative: [
{
id: 4,
name: 'Initiative 1-1-1',
ob_name: 'In Initiative 1-1-1 name',
parent: 2,
level: 2,
type_id: 3,
type_name: 'Initiative'
},
{
id: 5,
name: 'Inititative 1-1-2',
ob_name: 'In Initiative 1-1-2 name',
parent: 2,
level: 2,
type_id: 3,
type_name: 'Initiative'
},
{
id: 6,
name: 'Initiative 1-1-3',
ob_name: 'In Initiative 1-1-3 name',
parent: 2,
level: 2,
type_id: 3,
type_name: 'Initiative'
}
]
},
{
id: 3,
name: 'Kwyresult 1-2',
ob_name: 'Kr Key result 1-2 name',
parent: 1,
level: 1,
type_id: 2,
type_name: 'Keyresult',
Initiative: [
{
id: 7,
name: 'Inititative 1-2-1',
ob_name: 'In Initiative 1-2-1 name',
parent: 3,
level: 2,
type_id: 3,
type_name: 'Initiative'
},
{
id: 8,
name: 'Inititative 1-2-2',
ob_name: 'In Initiative 1-2-2 name',
parent: 3,
level: 2,
type_id: 3,
type_name: 'Initiative'
}
]
}
]
},
{
id: null,
name: null,
ob_name: null,
parent: null,
level: 0,
type_id: 1,
type_name: 'Objective',
Keyresults: [
{
id: 9,
name: 'Key result 2',
ob_name: 'Kr Key result 2 name',
parent: null,
level: 1,
type_id: 2,
type_name: 'Keyresult',
Initiative: [
{
id: 10,
name: 'Initiative 2',
ob_name: 'In Initiative 2 name',
parent: 9,
level: 2,
type_id: 3,
type_name: 'Initiative'
}
]
}
]
},
{
id: 11,
name: 'Objective 3',
ob_name: 'Ob objective 3 name',
parent: null,
level: 0,
type_id: 1,
type_name: 'Objective',
Keyresults: [
{
id: 12,
name: 'Key Result 3',
ob_name: 'Kr Key result 3 name',
parent: 11,
level: 1,
type_id: 2,
type_name: 'Keyresult',
Initiative: [
{
id: null,
name: null,
ob_name: null,
parent: 12,
level: 2,
type_id: 3,
type_name: 'Initiative'
}
]
}
]
},
,
{
id: 13,
name: 'Objective 4',
ob_name: 'Ob objective 4',
parent: null,
level: 0,
type_id: 1,
type_name: 'Objective',
Keyresults: [
{
id: null,
name: null,
ob_name: null,
parent: 13,
level: 1,
type_id: 2,
type_name: 'Keyresult',
Initiative: [
{
id: 14,
name: 'Initiative 4',
ob_name: 'In Initiative 4 name',
parent: 13,
level: 2,
type_id: 3,
type_name: 'Initiative'
}
]
}
]
},
,
{
id: null,
name: null,
ob_name: null,
parent: null,
level: 0,
type_id: 1,
type_name: 'Objective',
Keyresults: [
{
id: null,
name: null,
ob_name: null,
parent: null,
level: 1,
type_id: 2,
type_name: 'Keyresult',
Initiative: [
{
id: 15,
name: 'Initiative Standalone',
ob_name: 'In initiative Standalone name',
parent: null,
level: 2,
type_id: 3,
type_name: 'Initiative'
}
]
}
]
}
]
}
Я знаю, это странное требование. в моем приложении нет промежуточного программного обеспечения для манипулирования. ожидаемый json используется для привязки вида сетки. требование, если 'type_id' 3 типа. он показывает как 3 столбца в gridview, предположим, что родительские и дочерние отношения верны, он показывает тот же heirachay, иногда родительское отношение отсутствует, показывается как пустой узел в иерархии слоев.
, пожалуйста, дайте мне знать, есть ли какая-либо опция в postgress выглядят так же или любые другие варианты