Deserializar una lista de objetos que contienen un diccionario

He visto muchos ejemplos que parecen indicar que lo que estoy haciendo debería funcionar, pero por alguna razón, no es así. Estoy tratando de deserializar una colección de objetos, una de las propiedades de la cual es un Diccionario, como:

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

La primera cadena json encapsula todo en un objeto: si lo ejecuto funciona bien, pero myObjects es solo una lista vacía. Si ejecuto la segunda cadena (sin estar envuelta) aparece el siguiente error:

Escriba '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]] 'no es compatible con la deserialización de una matriz.

A partir de la investigación que he hecho, parece que debería ser bastante sencillo: ¿alguien tiene alguna idea sobre qué formato JSON debo utilizar y qué está mal? El JSON se deserializa muy bien si solo hago un objeto en lugar de una matriz de objetos.

Respuestas a la pregunta(3)

Su respuesta a la pregunta