J'aime vraiment la ExpandoObjectcompilation 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 dynamicplace de ExpandoObject- JsonResultest capable de sérialiser les dynamicpropriétés et les valeurs en un seul objet (sans clé ni valeur), mais la raison pour laquelle je dois utiliser ExpandoObjectest 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 dynamicsans 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!