Ich mag das ExpandoObject
beim 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 dynamic
anstelle von ExpandoObject
- JsonResult
die dynamic
Eigenschaften und Werte in ein einzelnes Objekt serialisieren kann (ohne Schlüssel- oder Wertgeschäft), aber der Grund, den ich verwenden muss, ExpandoObject
ist, 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, dynamic
ohne 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!