Sérialisation JSON MVC3: comment contrôler les noms de propriété?
Je veux sérialiser un objet simple en JSON:
public class JsonTreeNode
{
[DataMember(Name = "title")]
public string Title { get; set; }
[DataMember(Name = "isFolder")]
public bool IsFolder { get; set; }
[DataMember(Name = "key")]
public string Key { get; set; }
[DataMember(Name = "children")]
public IEnumerable<JsonTreeNode> Children { get; set; }
[DataMember(Name = "select")]
public bool SelectedOnInit { get; set; }
}
Mais à chaque fois que je le fais:
return Json(tree, JsonRequestBehavior.AllowGet);
Les noms de propriété ne sont pas comme spécifié dans le [DataMember]
section, mais similaires à ceux définis directement dans la classe, par exemple en cas de SelectOnInit
il n'est pas select
mais SelectOnInit
.
Ce que je fais mal?
source d'informationauteur xsl
Vous devez vous connecter pour publier un commentaire.
J'ai résolu le problème en utilisant la technique fournie dans la réponse à cette question:
ASP.NET MVC: Contrôle de la sérialisation des noms de propriété avec JsonResult
Ici, c'est la classe que j'ai fait:
Utilisation:
J'ai également eu à modifier la classe initiale:
C'est une solution qui utilise newtonsoft Json.net (pour la performance concernée)
J'ai trouvé une partie de la solution ici et SI
De sorte que, dans mon contrôleur, je peux le faire
Dans mon modèle, je peux maintenant avoir:
Remarque que maintenant, vous devez définir le
JsonPropertyAttribute
pour chaque propriété que vous souhaitez sérialiser.