2011-05-26 14 views
5

को मैं क्रमानुसार करने में सक्षम होना चाहते/एक सामान्य सूची deserialize क्या मैं अब तक इसserialize/deserialize सूची <T> JSON

public static string ToJson(this object obj, int recursionDepth = 100) 
    { 
     JavaScriptSerializer serializer = new JavaScriptSerializer(); 
     serializer.RecursionLimit = recursionDepth; 
     return serializer.Serialize(obj); 
    } 

    public static List<T> ToListObject<T>(this string obj, int recursionDepth = 100) 
    { 
     JavaScriptSerializer serializer = new JavaScriptSerializer(); 
     serializer.RecursionLimit = recursionDepth; 
     List<T> returnList = serializer.Deserialize<List<T>>(obj); 
     return returnList; 
    } 

मैं भी कोशिश की (List<T>)serializer.DeserializeObject(obj)

Deserialize के साथ है यह गलत deserializes (एक खाली List<T> ऑब्जेक्ट) और DeserializeObject के साथ यह एक त्रुटि कहता है कि 'दिए गए स्ट्रिंग को टी की सरणी में deserialize नहीं कर सका'। और मैं iostream :(उपयोग करने के लिए वास्तव में किसी भी अंतर्दृष्टि appriciate होगा सकेंगे

अद्यतन:।। यहां तक ​​कि बुनियादी क्रमबद्धता/अक्रमांकन काम करता है, यह सिर्फ मेरा दिन नहीं था जब मैं इस पोस्ट :)

+0

आप पर [इस] देखा है (http://msdn.microsoft.com/en-us/library/bb412179.aspx) लेख? –

+3

जेएसओएन स्ट्रिंग क्या है जिसे आप deserialize करने की कोशिश कर रहे हैं? और टाइप टी क्या है जिसे आप ToListObject विधि में भेज रहे हैं? – carlosfigueira

+0

मेरे लिए मेमोरीस्ट्रीम का उपयोग करने के लिए काम नहीं करेगा (इससे वापस पढ़ना, इसलिए यह समय की अवधि में उपलब्ध नहीं होगा) और मैं आईओएसट्रीम का उपयोग करने में सक्षम नहीं हूं। – Hadesara

उत्तर

10

इस प्रयास करें पर आकार के लिए:

public static T ToObject<T>(this string obj, int recursionDepth = 100) 
{ 
    JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    serializer.RecursionLimit = recursionDepth; 
    return serializer.Deserialize<T>(obj); 
} 

तो इस तरह इसका इस्तेमाल:

mystring.ToObject<List<MyClass>>(); 
संबंधित मुद्दे