Sembra che dovrebbe essere così semplice, ma sto ricevendo un'eccezione quando provo a deserialize un semplice JSON in un tipo gestito. L'eccezione è:Nessun costruttore parametrico definito per tipo di "System.String" durante la deserializzazione JSON
MissingMethodException
No senza parametri costruttore definito per tipo di 'System.String'
Se è vero che non ci sono costruttori senza parametri per System.String, io non sono chiaro perché questo è importante.
Il codice che esegue la deserializzazione è:
using System.Web.Script.Serialization;
private static JavaScriptSerializer serializer = new JavaScriptSerializer();
public static MyType Deserialize(string json)
{
return serializer.Deserialize<MyType>(json);
}
mio tipo è più o meno:
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; }
}
L'altra classe è per un indirizzo:
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; }
}
Ecco il 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"
}
}
ottengo la stessa eccezione, anche se il mio JSON è solo:
{
"id": "uniquestring"
}
Qualcuno può dirmi il motivo per cui è necessario un costruttore senza parametri per System.String?
Il 'MissingMethodException' è associato al tipo' stringa' (non ha un costruttore senza parametri), non con 'JavaScriptSerializer'. –
Possibile duplicato: http://stackoverflow.com/questions/2959605 –
'DataContractJsonSerializer' è generalmente un'opzione migliore di' JavaScriptSerializer' comunque. – Steve