मैं ExpandoObject
रन-टाइम पर सर्वर-साइड डायनामिक ऑब्जेक्ट को कंप्लीट करते समय वास्तव में पसंद करता हूं, लेकिन मुझे JSON कॉन्ट्रिब्यूशन के दौरान इस चीज को समतल करने में परेशानी हो रही है। सबसे पहले, मैं वस्तु को तत्काल:
dynamic expando = new ExpandoObject();
var d = expando as IDictionary<string, object>;
expando.Add("SomeProp", SomeValueOrClass);
अब तक सब ठीक है। मेरे MVC कंट्रोलर में, मैं इसे एक JsonResult के रूप में भेजना चाहता हूं, इसलिए मैं ऐसा करता हूं:
return new JsonResult(expando);
यह नीचे दिए गए JSON को क्रमबद्ध करता है, ब्राउज़र द्वारा भस्म होने के लिए:
[{"Key":"SomeProp", "Value": SomeValueOrClass}]
लेकिन, मैं वास्तव में क्या देखना चाहूंगा:
{SomeProp: SomeValueOrClass}
मुझे पता है कि मैं इसे प्राप्त कर सकता हूं अगर मैं dynamic
इसके बजाय का उपयोग करता हूं ExpandoObject
- गुणों और मूल्यों को एक ही वस्तु (कोई कुंजी या मूल्य व्यवसाय के साथ) में JsonResult
अनुक्रमित करने में सक्षम है dynamic
, लेकिन मुझे जो उपयोग करने की आवश्यकता है ExpandoObject
वह इसलिए है क्योंकि मैं सभी को नहीं जानता हूं गुण जो मैं रनटाइम तक ऑब्जेक्ट पर चाहता हूं , और जहां तक मुझे पता है, मैं गतिशील रूप से एक dynamic
का उपयोग किए बिना एक संपत्ति नहीं जोड़ सकता ExpandoObject
।
मुझे अपनी जावास्क्रिप्ट में "कुंजी", "मूल्य" व्यवसाय के माध्यम से झारना पड़ सकता है, लेकिन मैं इसे ग्राहक को भेजने से पहले यह पता लगाने की उम्मीद कर रहा था। आपकी सहायताके लिए धन्यवाद!