J'aime vraiment la ExpandoObject
compilation d'un objet dynamique côté serveur au moment de l'exécution, mais j'ai du mal à aplatir cette chose lors de la sérialisation JSON. Tout d'abord, j'instancie l'objet:
dynamic expando = new ExpandoObject();
var d = expando as IDictionary<string, object>;
expando.Add("SomeProp", SomeValueOrClass);
Jusqu'ici tout va bien. Dans mon contrôleur MVC, je veux ensuite envoyer ceci en tant que JsonResult, donc je fais ceci:
return new JsonResult(expando);
Cela sérialise le JSON dans le ci-dessous, pour être consommé par le navigateur:
[{"Key":"SomeProp", "Value": SomeValueOrClass}]
MAIS, ce que j'aimerais vraiment, c'est voir ceci:
{SomeProp: SomeValueOrClass}
Je sais que je peux y parvenir si j'utilise à la dynamic
place de ExpandoObject
- JsonResult
est capable de sérialiser les dynamic
propriétés et les valeurs en un seul objet (sans clé ni valeur), mais la raison pour laquelle je dois utiliser ExpandoObject
est que je ne sais pas tout les propriétés que je veux sur l'objet jusqu'à l'exécution , et pour autant que je sache, je ne peux pas ajouter dynamiquement une propriété à un dynamic
sans utiliser un ExpandoObject
.
Je devrais peut-être passer au crible les affaires "Clé", "Valeur" dans mon javascript, mais j'espérais comprendre cela avant de l'envoyer au client. Merci de votre aide!