Десериализация списка объектов, которые содержат словарь

Я видел много примеров, которые, кажется, показывают, что то, что я делаю, должно работать, но по какой-то причине это не так. Я пытаюсь десериализовать коллекцию объектов, одним из свойств которой является словарь, например:

class Program
{
    static void Main(string[] args)
    {
        var json = "{\"Collection\":[{\"ID\":\"1243\",\"Dictionary\":[{\"Key\":\"color\", \"Value\":\"red\"},{\"Key\":\"size\",\"Value\":\"large\"}]},{\"ID\":\"1243\",\"Dictionary\":[{\"Key\":\"color\", \"Value\":\"blue\"},{\"Key\":\"size\",\"Value\":\"small\"}]}]}";
        //var json = "[{\"ID\":\"1243\",\"Dictionary\":[{\"Key\":\"color\", \"Value\":\"red\"},{\"Key\":\"size\",\"Value\":\"large\"}]},{\"ID\":\"1243\",\"Dictionary\":[{\"Key\":\"color\", \"Value\":\"blue\"},{\"Key\":\"size\",\"Value\":\"small\"}]}]";
        List<MyObject> myObjects = new JavaScriptSerializer().Deserialize<List<MyObject>>(json);
    }
}

[DataContract]
public class MyObject
{
    [DataMember]
    public string ID { get; set; }

    [DataMember]
    public Dictionary<string, string> Dictionary { get; set; }
}

Первая строка json инкапсулирует все в объекте - если я запускаю тот, он работает нормально, но myObjects - просто пустой список. Если я запускаю вторую строку (без переноса), я получаю следующую ошибку:

Type 'System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' is not supported for deserialization of an array.

Из проведенного мною исследования кажется, что все должно быть довольно просто - у кого-нибудь есть идеи относительно того, какой формат JSON мне следует использовать и что идет не так? JSON отлично десериализуется, если я просто делаю один объект вместо массива объектов.

Ответы на вопрос(3)

Ваш ответ на вопрос