Em C # como posso desserializar este json quando um campo pode ser uma string ou um array de strings?
Eu tenho um site asp.net-mvc e estou lendo na cadeia Json de um banco de dados. Aqui está o seguinte json em um banco de dados. Poderia ser assim:
<code>{"description": "Test", "contacts": ["[email protected]", "[email protected]"], "enabled": true} </code>
ou isto:
<code>{"description": "Test", "contacts": "[email protected], [email protected]", "enabled": true} </code>
Então, como você pode ver, o campo de contatos é:
uma string (com itens separados por vírgulas)um array de strings.Eu quero converter para esta classe:
<code>public class MyJob { public string description; public string[] contacts; public string enabled; } </code>
quando eu tento atribuir apenas a uma string (alterando o acima para isso: contatos de cadeia pública;) usando o JavascriptSerializer ():
<code>var serializer = new JavaScriptSerializer(); string contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts; </code>
Eu recebo este erro nos casos em que é uma matriz:Tipo 'System.String' não tem suporte para desserialização de uma matriz.
qual é a melhor maneira de deserializar isso para lidar com o caso de:
uma linhaum array de strings.para o campo de contato. Fico feliz em colocar qualquer lógica condicional necessária. .
Eu tentei isso:
<code> var contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts; if (contacts is string) { jobInfo.contacts = contacts; } else { jobInfo.contacts = String.Join("; ", contacts ); } </code>
mas isso não parece corrigir como ainda estou recebendo o erro acima quando é uma matriz