Bardzo podoba mi się ExpandoObject
podczas kompilowania obiektu dynamicznego po stronie serwera w czasie wykonywania, ale mam problem ze spłaszczeniem tego elementu podczas serializacji JSON. Najpierw tworzę instancję obiektu:
dynamic expando = new ExpandoObject();
var d = expando as IDictionary<string, object>;
expando.Add("SomeProp", SomeValueOrClass);
Na razie w porządku. W moim kontrolerze MVC chcę następnie wysłać to jako JsonResult, więc robię to:
return new JsonResult(expando);
Spowoduje to serializację JSON do poniższego, do wykorzystania przez przeglądarkę:
[{"Key":"SomeProp", "Value": SomeValueOrClass}]
ALE, naprawdę chciałbym to zobaczyć:
{SomeProp: SomeValueOrClass}
Wiem, że mogę to osiągnąć, jeśli dynamic
zamiast tego używam ExpandoObject
- JsonResult
jest w stanie serializować dynamic
właściwości i wartości w jednym obiekcie (bez biznesu kluczowego lub wartościowego), ale powodem, dla którego muszę użyć, ExpandoObject
jest to, że nie znam wszystkich właściwości, które chcę na obiekcie do czasu wykonania , i o ile wiem, nie mogę dynamicznie dodawać właściwości do obiektu dynamic
bez użycia pliku ExpandoObject
.
Być może będę musiał przejrzeć biznes „Klucz”, „Wartość” w moim javascript, ale miałem nadzieję, że uda mi się to rozgryźć przed wysłaniem go do klienta. Dzięki za pomoc!