En C #, ¿cómo puedo deserializar este json cuando un campo puede ser una cadena o una matriz de cadenas?

Tengo un sitio web asp.net-mvc y estoy leyendo en una cadena Json de una base de datos. Aquí está el siguiente json en una base de datos. Podría verse así:

<code>{"description": "Test", "contacts": ["[email protected]", "[email protected]"], "enabled": true}
</code>

o esto:

<code>{"description": "Test", "contacts": "[email protected], [email protected]", "enabled": true}
</code>

Como puede ver, el campo de contactos es:

una cadena (con elementos separados por comas)una serie de cadenas.

Quiero convertir a esta clase:

<code>public class MyJob
{
    public string description;
    public string[] contacts;
    public string enabled;
}
</code>

cuando intento asignar solo a una cadena (cambiando lo anterior a: contactos de cadena pública;) usando JavascriptSerializer ():

<code>var serializer = new JavaScriptSerializer();
string contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts;
</code>

Me sale este error en los casos en que es una matriz:El tipo 'System.String' no es compatible con la deserialización de una matriz.

¿Cuál es la mejor manera de deserializar esto para manejar el caso de:

una cuerdauna serie de cadenas.

para el campo de contacto. Estoy feliz de poner cualquier lógica condicional necesaria. .

Intenté esto:

<code>  var contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts;
        if (contacts is string)
        {
            jobInfo.contacts = contacts;
        }
        else
        {
            jobInfo.contacts = String.Join("; ", contacts );
        }
</code>

pero eso no parece arreglarlo ya que todavía estoy recibiendo el error anterior cuando es una matriz

Respuestas a la pregunta(3)

Su respuesta a la pregunta