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:

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

albo to:

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

tak jak widzisz, pole kontaktów jest albo:

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

Chcę przekonwertować na tę klasę:

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

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

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

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:

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

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

questionAnswers(3)

yourAnswerToTheQuestion