Во время десериализации JSON для типа 'System.String' не определен конструктор без параметров.

Кажется, это должно быть так просто, но я получаю исключение, когда пытаюсь десериализовать простой 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(json);
}

Мой тип примерно:

public class MyType
{
    public string id { get; set; }
    public string type { get; set; }
    public List location { get; set; }
    public Address address { get; set; }
    public Dictionary 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?

28
задан Justin R. 6 April 2016 в 16:54
поделиться