Em C # como posso desserializar este json quando um campo pode ser uma string ou um array de strings?

Eu tenho um site asp.net-mvc e estou lendo na cadeia Json de um banco de dados. Aqui está o seguinte json em um banco de dados. Poderia ser assim:

{"description": "Test", "contacts": ["joe@gmail.com", "bill@yahoo.com"], "enabled": true}

ou isto:

{"description": "Test", "contacts": "joe@gmail.com, bill@yahoo.com", "enabled": true}

Então, como você pode ver, o campo de contatos é:

uma string (com itens separados por vírgulas)um array de strings.

Eu quero converter para esta classe:

public class MyJob
{
    public string description;
    public string[] contacts;
    public string enabled;
}

quando eu tento atribuir apenas a uma string (alterando o acima para isso: contatos de cadeia pública;) usando o JavascriptSerializer ():

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

Eu recebo este erro nos casos em que é uma matriz:Tipo 'System.String' não tem suporte para desserialização de uma matriz.

qual é a melhor maneira de deserializar isso para lidar com o caso de:

uma linhaum array de strings.

para o campo de contato. Fico feliz em colocar qualquer lógica condicional necessária. .

Eu tentei isso:

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

mas isso não parece corrigir como ainda estou recebendo o erro acima quando é uma matriz