Ich mag das ExpandoObjectbeim Kompilieren eines serverseitigen dynamischen Objekts zur Laufzeit sehr, aber ich habe Probleme, dieses Ding während der JSON-Serialisierung zu reduzieren. Zuerst instanziiere ich das Objekt:
dynamic expando = new ExpandoObject();
var d = expando as IDictionary<string, object>;
expando.Add("SomeProp", SomeValueOrClass);
So weit, ist es gut. In meinem MVC-Controller möchte ich dies dann als JsonResult senden, also mache ich Folgendes:
return new JsonResult(expando);
Dadurch wird der JSON wie folgt serialisiert, damit er vom Browser verwendet werden kann:
[{"Key":"SomeProp", "Value": SomeValueOrClass}]
ABER was ich wirklich gerne sehen würde ist:
{SomeProp: SomeValueOrClass}
Ich weiß, dass ich dies erreichen kann, wenn ich dynamicanstelle von ExpandoObject- JsonResultdie dynamicEigenschaften und Werte in ein einzelnes Objekt serialisieren kann (ohne Schlüssel- oder Wertgeschäft), aber der Grund, den ich verwenden muss, ExpandoObjectist, dass ich nicht alle kenne Die Eigenschaften, die ich bis zur Laufzeit für das Objekt haben möchte , und soweit ich weiß, kann ich eine Eigenschaft nicht dynamisch zu einer hinzufügen, dynamicohne eine zu verwenden ExpandoObject.
Ich muss möglicherweise das Geschäft "Schlüssel", "Wert" in meinem Javascript durchsehen, aber ich hatte gehofft, dies herauszufinden, bevor ich es an den Kunden sende. Danke für Ihre Hilfe!