2009-10-07 37 views
5

Estoy tratando de deserializar algunos JSON que estoy agarrando de un servicio de asmx en una lista de objetos. Todos los campos en los campos coincidentes en la clase JSON, el JSON está volviendo válida, pero me sale el error aparentemente críptico:"El valor no puede ser nulo" error al deserializar json usando C#/JavaScriptSerializer

Value cannot be null. Parameter name: type.

no hay ningún parámetro llamado tipo en cualquiera de mis objetos. ¿Alguien ha visto esto antes?

Aquí está el código que arroja el error.

System.Web.Script.Serialization.JavaScriptSerializer serr = new System.Web.Script.Serialization.JavaScriptSerializer(); 
List<Rejection> l = serr.Deserialize<List<Rejection>>(json); 

JSON es una cadena declarado más temprano y volviendo con JSON válido que coincida con el campo de mi clase. ¿La clase a la que está deserializando tiene que coincidir con lo que está en el atributo __type en el json?

+0

¿Puedes publicar algún fragmento de código? –

Respuesta

0

no estoy seguro exactamente dónde está su problema, pero trate siguiente código:


string input = "..."; // your asmx data 
JavaScriptSerializer serializer = new JavaScriptSerializer(); 
List<YourCustomClass> novos = new List<YourCustomClass>(
    serializer.Deserialize<YourCustomClass[]>(input))); 
0

he resuelto mi problema evitando el serializador Javascript a todos juntos y utilizando la biblioteca json.net. Trabajado como un encanto.

3

Sólo tengo esto también - Creo que es algo que ver con el serializador ser inicializado sin resolver tipo:

// The following fails 
var serialiser = new JavaScriptSerializer(); 
MyClass obj = serialiser.Deserialize<MyClass>(input); 

// But the following works fine 
var serialiser = new JavaScriptSerializer(new SimpleTypeResolver()); 
MyClass obj = serialiser.Deserialize<MyClass>(input); 

encontré que solo recibió este error cuando deserialising JSON que tenía el __type atributo presente (que solo está presente cuando se serializa utilizando un tipo de resolver). Si su JSON no tiene el atributo __type, entonces la deserialización parece funcionar bien utilizando cualquiera de los anteriores.

+3

Tengo el mismo problema que OP, al intentar esto me da un error 'La operación no es válida debido al estado actual del objeto. –

+0

@Shredder Voy a adivinar que la excepción es otro problema separado que solo ves una vez Has solucionado el primer problema. – Justin

+0

Sí, si mal no recuerdo, lo resolví analizando el __type de la cadena json. –

Cuestiones relacionadas