2011-05-26 28 views
5

Quiero ser capaz de serializar/deserializar una lista genérica de lo que hasta ahora es esteserializar Lista/deserializar <T> a 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; 
    } 

También probé (List<T>)serializer.DeserializeObject(obj)

Con la Deserialize que deserializa mal (a un objeto List<T> vacío) y con DeserializeObject arroja un error que dice 'No se pudo deserializar la cadena dada en una matriz de T'. Y no voy a poder usar el iostream :(Verdaderamente appriciate cualquier penetración

ACTUALIZACIÓN:.. Incluso las obras básicas de serialización/deserialización, era simplemente no es mi día cuando me envió esto :)

+0

¿Has mirado en [esta] (http://msdn.microsoft.com/en-us/library/bb412179.aspx ¿artículo? –

+3

¿Cuál es la cadena JSON que intentas deserializar? ¿Y cuál es el tipo T que está pasando al método ToListObject? – carlosfigueira

+0

No funcionará para mí ya que está usando un MemoryStream (leyendo de él, por lo que no estará disponible durante un período de tiempo) y no podré usar IOStream. – Hadesara

Respuesta

10

probar este en el tamaño:

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

Entonces utilizar de esta manera:

mystring.ToObject<List<MyClass>>(); 
Cuestiones relacionadas