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