Parece que debería ser tan fácil, pero obtengo una excepción cuando trato de deserialize usar un poco de JSON directo en un tipo administrado. La excepción es:No se definió ningún constructor sin parámetros para el tipo de 'System.String' durante la deserialización JSON
MissingMethodException
Sin constructor sin parámetros definidos para el tipo de 'System.String'
Si bien es cierto que no hay constructores sin parámetros para System.String, no estoy claro en cuanto a por qué esto importa.
El código que realiza la deserialización es:
using System.Web.Script.Serialization;
private static JavaScriptSerializer serializer = new JavaScriptSerializer();
public static MyType Deserialize(string json)
{
return serializer.Deserialize<MyType>(json);
}
Mi tipo es más o menos:
public class MyType
{
public string id { get; set; }
public string type { get; set; }
public List<Double> location { get; set; }
public Address address { get; set; }
public Dictionary<string, string> localizedStrings { get; set; }
}
La otra clase es de una dirección:
public class Address
{
public string addressLine { get; set; }
public string suite { get; set; }
public string locality { get; set; }
public string subdivisionCode { get; set; }
public string postalCode { get; set; }
public string countryRegionCode { get; set; }
public string countryRegion { get; set; }
}
Aquí está la JSON:
{
"id": "uniqueString",
"type": "Foo",
"location": [
47.6,
-122.3321
]
"address": {
"addressLine": "1000 Fourth Ave",
"suite": "en-us",
"locality": "Seattle",
"subdivisionCode": "WA",
"postalCode": "98104",
"countryRegionCode": "US",
"countryRegion": "United States"
},
"localizedStrings": {
"en-us": "Library",
"en-ES": "La Biblioteca"
}
}
tengo la misma excepción, incluso si mi JSON es simplemente:
{
"id": "uniquestring"
}
¿Puede alguien decirme por qué se necesita un constructor sin parámetros para System.String?
La 'MissingMethodException' está asociada con el tipo' string' (no tiene un constructor sin parámetros), no con 'JavaScriptSerializer'. –
Posible duplicado: http://stackoverflow.com/questions/2959605 –
'DataContractJsonSerializer' es generalmente una mejor opción que' JavaScriptSerializer' de todos modos. – Steve