Construire JSON Hiérarchie à partir de Données Structurées
C# | .NET 4.5 | Entity Framework 5
J'ai des données de retour d'une Requête SQL dans la forme de ID,ParentID,Nom. J'aimerais que les données et les analyser dans un Hiérarchique chaîne JSON. Jusqu'à présent, il semble être beaucoup plus une tâche ardue qu'elle ne devrait l'être. Depuis que je suis en utilisant Entité de données revient bien pour moi comme un IEnumerable. Maintenant, je crois que j'ai juste besoin d'une certaine forme de récursivité, mais je ne suis pas tout à fait sûr où commencer. Toute aide est appréciée.
Données de Retours comme
id parentId nom 1 1 TopLoc 2 1 Loc1 3 1 Loc2 4 2 Loc1A
Code est
public static string GetJsonLocationHierarchy(long locationID)
{
using (EntitiesSettings context = new EntitiesSettings())
{
//IEnumerable of ID,ParentID,Name
context.GetLocationHierarchy(locationID);
}
}
Le résultat final que j'avais de l'espoir serait quelque chose comme ceci:
{
"id": "1",
"parentId": "1",
"name": "TopLoc",
"children": [
{
"id": "2",
"parentId": "1",
"name": "Loc1",
"children": [
{
"id": "4",
"parentId": "2",
"name": "Loc1A",
"children": [
{}
]
}
]
},
{
"id": "3",
"parentId": "1",
"name": "Loc2",
"children": [
{}
]
}
]
}
Vous devez vous connecter pour publier un commentaire.
Un moyen de transformer une table à plat dans une hiérarchie est de mettre tous les nœuds dans un dictionnaire. Parcourir le dictionnaire, et pour chaque nœud, rechercher sa mère et l'ajouter à la mère de ses enfants. À partir de là, vous avez juste besoin de trouver la racine et le sérialiser.
Voici un exemple de programme pour démontrer l'approche:
Voici le résultat:
Location loc = JsonConvert.DeserializeObject<Location>(json);