J’ai un tableau JSON avec des objects nesteds, représentant un menu, comme ceci:
[ [ { "name": "Item 1", "id": 1 }, { "name": "Item 2", "id": 2, "children": [ [ { "name": "Item 21", "id": 21 } ] ] }, { "name": "Item 3", "id": 3, "children": [ [ { "name": "Item 31", "id": 31, "children": [ [ { "name": "Item 311", "id": 311 }, { "name": "Item 312", "id": 312 } ] ] }, { "name": "Item 32", "id": 32 }, ...
Et je veux le désérialiser à l’aide de JavaScriptSerializer. J’ai du code comme indiqué ci-dessous mais ne fonctionne pas.
var serializer = new JavaScriptSerializer(); var objects = serializer.Deserialize
L’erreur que je reçois est “Le type ‘Menu’ n’est pas supporté pour désérialiser une masortingce”. J’apprécierais toute aide sur la façon de déclarer l’object personnalisé.
À votre santé.
Votre object racine est un tableau 2D déchiqueté d’objects. Les propriétés "children"
sont également des tableaux 2D déchiquetés. Ainsi, votre classe de Menu
doit être:
public class Menu { public int id { get; set; } public ssortingng name { get; set; } public Menu [][] children { get; set; } }
Et désérialisez votre JSON comme suit:
var serializer = new JavaScriptSerializer(); var objects = serializer.Deserialize
Sinon, si vous préférez les listes aux tableaux, faites:
public class Menu { public int id { get; set; } public ssortingng name { get; set; } public List> children { get; set; } }
Et alors
var objects = serializer.Deserialize>>(jsonData);
Le problème pourrait-il être que les données réelles sont un tableau mais que vous lui dites d’attendre un seul menu?