В C # как я могу десериализовать этот JSON, когда одно поле может быть строкой или массивом строк?
У меня есть сайт asp.net-mvc, и я читаю строку Json из базы данных. Вот следующий JSON в БД. Это может выглядеть так:
<code>{"description": "Test", "contacts": ["[email protected]", "[email protected]"], "enabled": true} </code>
или это:
<code>{"description": "Test", "contacts": "[email protected], [email protected]", "enabled": true} </code>
так что, как вы можете видеть, поле для контактов либо:
a string (with items separated by commas) an array of strings.Я хочу преобразовать в этот класс:
<code>public class MyJob { public string description; public string[] contacts; public string enabled; } </code>
когда я пытаюсь назначить только строку (изменив вышеприведенное на следующее: public string contacts; ) с помощью JavascriptSerializer ():
<code>var serializer = new JavaScriptSerializer(); string contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts; </code>
Я получаю эту ошибку в случаях, когда это массив:Type 'System.String' is not supported for deserialization of an array.
Каков наилучший способ десериализации этого для обработки случая:
a string an array of strings.для поля контакта. Я счастлив поставить любую условную логику, необходимую. ,
Я попробовал это:
<code> var contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts; if (contacts is string) { jobInfo.contacts = contacts; } else { jobInfo.contacts = String.Join("; ", contacts ); } </code>
но это, похоже, не исправило, так как я все еще получаю ошибку выше, когда это массив