Deserialización C# JSON

Existe una gran diferencia de comportamiento entre DataContractJsonSerializer y JavascriptSerializer. Por ejemplo, DataContractJsonSerializer representa diccionarios como matrices de pares clave/valor, mientras que JavascriptSerializer representa diccionarios como objetos JSON reales.

En el siguiente listado: este diccionario está representado por un objeto JSON:

DataContractJsonSerializer lo representa como [{"key": "one", "value": 1}, { "clave": "dos", "valor": 2}].

JavascriptSerializer representa esto como {"uno": 1, "dos": 2}.

DataContractJsonSerializer puede manejar diccionarios cuyos tipos de claves no sean cadenas, pero JavascriptSerializer no. En este sentido, el primero es más fuerte. Pero este último es más compatible con JSON.