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:

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

ou isto:

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

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:

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

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

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

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:

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

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

questionAnswers(3)

yourAnswerToTheQuestion