J'ai le tableau suivant :
Id
HieararchyId
Nom
1
/
MHz
2
/1/
Finances
3
/1/
IT
4
/1/3/
Développement de logiciels
5
/1/3/
AQ
6
/1/2/
Comptable
et je veux obtenir des données pour mon TreeView comme :
[
{
"Id": 1,
"HierarchyId": "/"
"Name":"MHz",
"Children":[
{
"Id": 3,
"HierarchyId": "/1/"
"Name":"IT",
"Children":[
{
"Id": 4,
"HierarchyId": "/1/3/"
"Name":"Software Development",
"Children":[]
}
{
"Id": 5,
"HierarchyId": "/1/3/"
"Name":"QA",
"Children":[]
}
]
},
{
"Id": 2,
"HierarchyId": "/1/"
"Name":"Finance",
"Children":[
{
"Id": 6,
"HierarchyId": "/1/2/"
"Name":"Accountant",
"Children":[]
}
]
}
]
}
]
J'ai essayé avec ça : Comment générer des données JSON hiérarchiques ?
J'ai trouvé erreur : Plus aucune classe de verrouillage n'est disponible à partir de la transaction.
Ou bien est-il préférable de créer une fonction récursive et de remplir la fonction Tree
sur client side
?
Mise à jour
CREATE FUNCTION dbo.GetJson (@departmentId hierarchyid)
RETURNS nvarchar(max)
AS BEGIN
RETURN (
SELECT
Id,
HierarchyId,
Name,
children = JSON_QUERY(dbo.GetJson(HierarchyId))
FROM Departments p
WHERE p.HierarchyId.IsDescendantOf(@departmentId ) = 1
FOR JSON PATH
);
END;