J'aime vraiment l' ExpandoObject
lors de la compilation d'un serveur-côté dynamique de l'objet au moment de l'exécution, mais j'ai du mal à l'aplatissement de 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);
So far So good. Dans mon contrôleur MVC, je veux, puis envoyer cette baisse comme un JsonResult, donc ce que je fais:
return new JsonResult(expando);
Cette sérialise le JSON dans le ci-dessous, pour être consommées par le navigateur:
[{"Key":"SomeProp", "Value": SomeValueOrClass}]
MAIS, ce que j'aimerais vraiment c'est de voir ceci:
{SomeProp: SomeValueOrClass}
Je sais que je peux y arriver si j'utilise dynamic
au lieu de ExpandoObject
-- JsonResult
est en mesure de sérialiser l' dynamic
des propriétés et des valeurs dans un objet unique (pas de Clé ou de la Valeur d'entreprise), mais la raison pour laquelle j'ai besoin d'utiliser ExpandoObject
c'est parce que je ne connais pas toutes les propriétés sur l'objet, jusqu'à exécution, et autant que je sache, je ne peux pas dynamiquement ajouter une propriété à un dynamic
sans l'aide d'un ExpandoObject
.
J'ai peut-être de passer au crible la "Clé", la "Valeur" des affaires dans mon javascript, mais je m'attendais à comprendre cela avant de l'envoyer au client. Merci pour votre aide!