Deserializacja listy obiektów zawierających słownik

Widziałem wiele przykładów, które wskazują, że to, co robię, powinno działać, ale z jakiegoś powodu tak nie jest. Próbuję deserializować zbiór obiektów, którego jedną z właściwości jest Słownik, tak:

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; }
}

Pierwszy ciąg json hermetyzuje całość w obiekcie - jeśli go uruchomię, działa poprawnie, ale myObjects to tylko pusta lista. Jeśli uruchomię drugi ciąg znaków (bez zawijania) otrzymuję następujący błąd:

Wpisz „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]] 'nie jest obsługiwane dla deserializacji tablicy.

Z badań, które zrobiłem, wydaje się, że powinno być całkiem proste - każdy ma jakieś pomysły co do tego, który format JSON powinienem używać i co się dzieje źle? JSON jest w porządku, jeśli tylko wykonam jeden obiekt zamiast tablicy obiektów.

questionAnswers(3)

yourAnswerToTheQuestion