W C # jak mogę deserializować ten json, gdy jedno pole może być ciągiem znaków lub tablicą ciągów?

Mam stronę asp.net-mvc i czytam w łańcuchu Json z bazy danych. Oto następujący json w DB. Może to wyglądać tak:

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

albo to:

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

tak jak widzisz, pole kontaktów jest albo:

ciąg (z elementami oddzielonymi przecinkami)tablica ciągów.

Chcę przekonwertować na tę klasę:

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

kiedy próbuję przypisać tylko łańcuch (zmieniając powyższy ciąg na: publiczne kontakty string;) za pomocą JavascriptSerializer ():

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

Dostaję ten błąd w przypadkach, gdy jest to tablica:Wpisz „System.String” nie jest obsługiwane w przypadku deserializacji tablicy.

jaki jest najlepszy sposób, aby rozwiązać ten problem, aby poradzić sobie z przypadkiem:

sznurektablica ciągów.

dla pola kontaktu. Cieszę się, że potrzebna jest każda logika warunkowa. .

Próbowałem tego:

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

ale to nie wydawało się naprawić, ponieważ nadal otrzymuję błąd powyżej, gdy jest to tablica