Кажется, это должно быть так просто, но я получаю исключение, когда пытаюсь десериализовать некоторый простой JSON в управляемый тип.Исключением является:
MissingMethodException
Не определен конструктор без параметров для типа 'System.String'
Хотя верно, что для System нет конструкторов без параметров.String, мне не ясно, почему это важно.
Код, который выполняет десериализацию:
using System.Web.Script.Serialization;
private static JavaScriptSerializer serializer = new JavaScriptSerializer();
public static MyType Deserialize(string json)
{
return serializer.Deserialize<MyType>(json);
}
Мой тип примерно:
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; }
}
Другой класс предназначен для адреса:
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; }
}
Вот 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"
}
}
Я получаю то же исключение, даже если мой JSON просто:
{
"id": "uniquestring"
}
Кто-нибудь может мне сказать, почему для System.String нужен конструктор без параметров?