Wie kann ich in C # diesen JSON deserialisieren, wenn ein Feld eine Zeichenfolge oder ein Array von Zeichenfolgen sein kann?

Ich habe eine asp.net-mvc-Website und lese in Json String aus einer Datenbank. Hier ist der folgende json in einer DB. Es könnte so aussehen:

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

oder dieses:

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

Wie Sie sehen können, ist das Kontaktfeld entweder:

eine Zeichenfolge (mit durch Kommas getrennten Elementen)ein Array von Zeichenfolgen.

Ich möchte in diese Klasse konvertieren:

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

Wenn ich versuche, nur eine Zeichenfolge zuzuweisen (indem ich das Obige in das Folgende ändere: public string contacts;), benutze ich JavascriptSerializer ():

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

Ich erhalte diesen Fehler in den Fällen, in denen es sich um ein Array handelt:Der Typ "System.String" wird für die Deserialisierung eines Arrays nicht unterstützt.

Was ist der beste Weg, dies zu deserialisieren, um den Fall von:

ein Fadenein Array von Zeichenfolgen.

für das Kontaktfeld. Gerne stelle ich die benötigte Bedingungslogik zur Verfügung. .

Ich habe es versucht:

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

Aber das schien nicht zu beheben, da ich immer noch den Fehler oben, wenn es ein Array ist

Antworten auf die Frage(3)

Ihre Antwort auf die Frage