2012-11-27 9 views
9

मैं एक गतिशील ऑब्जेक्ट में एक जेसन स्ट्रिंग को डी-क्रमबद्ध करने के लिए एमवीसी 3 में जावास्क्रिप्टसेरियलाइज़र का सफलतापूर्वक उपयोग कर रहा हूं। जो मैं समझ नहीं पा रहा हूं वह यह है कि इसे किसी चीज पर कैसे डाला जा सकता है जिसे मैं समझ सकता हूं। नीचे दिए गए कोड की फ़ोरैच लाइन मेरा नवीनतम प्रयास है, लेकिन इसमें त्रुटियां हैं: "सिस्टम 'डायनेमिक। डायनेमिक ऑब्जेक्ट' को 'सिस्टम.कॉलेक्शन। आईनेमरेबल' में रूपांतरित नहीं कर सकता। मैं कैसे परिवर्तित या कास्ट कर सकता हूं ताकि मैं शब्दकोश के माध्यम से पुन: प्रयास कर सकूं ?कनवर्ट करें 'System.Dynamic.DynamicObject System.Collections.IEnumerable

public dynamic GetEntities(string entityName, string entityField) 
     { 
      var serializer = new JavaScriptSerializer(); 
      serializer.RegisterConverters(new[] { new      MyProject.Extensions.JsonExtension.DynamicJsonConverter() }); 
      dynamic data = serializer.Deserialize(json, typeof(object)); 
      return data; 
     } 


foreach (var author in GetEntities("author", "lastname")) 
+2

इसे पहले IDictionary पर कास्ट करें। – user629926

+0

क्या आप जेसन के लेआउट को पोस्ट कर सकते हैं? – looper

उत्तर

3

Dyn amicObject IDictionary से विरासत में मिला है, इसलिए आप इसे IDictionary में डाल सकते हैं।

public IDictionary<string, object> GetEntities(string entityName, string entityField) 
    { 
     var serializer = new JavaScriptSerializer(); 
     serializer.RegisterConverters(new[] { new MyProject.Extensions.JsonExtension.DynamicJsonConverter() }); 
     dynamic data = serializer.Deserialize(json, typeof(object)); 
     return data as IDictionary<string, object>; 
    } 




foreach (var author in GetEntities("author", "lastname")) 
7

अपने उदाहरण को देखते हुए 'GetEntities', (कम से कम एक IEnumerable<dynamic>, या हालांकि जोरदार सिफारिश की नहीं) IEnumerable<T> करने के लिए अपनी वापसी प्रकार बदलने का प्रयास करें। आप विधि के भीतर कुछ छानने करने के लिए निकालने के लिए की आवश्यकता होगी के उपयोग 'entityName' इनपुट पैरामीटर के आधार पर उपयुक्त इकाइयां। हालांकि, यह स्पष्ट नहीं है कि इच्छित इनपुट अन्य इनपुट पैरामीटर ('इकाई फ़ील्ड') का उपयोग क्या है।

संबंधित मुद्दे