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