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:
{"description": "Test", "contacts": ["joe@gmail.com", "bill@yahoo.com"], "enabled": true}
ou isto:
{"description": "Test", "contacts": "joe@gmail.com, bill@yahoo.com", "enabled": true}
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:
public class MyJob
{
public string description;
public string[] contacts;
public string enabled;
}
quando eu tento atribuir apenas a uma string (alterando o acima para isso: contatos de cadeia pública;) usando o JavascriptSerializer ():
var serializer = new JavaScriptSerializer();
string contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts;
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:
var contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts;
if (contacts is string)
{
jobInfo.contacts = contacts;
}
else
{
jobInfo.contacts = String.Join("; ", contacts );
}
mas isso não parece corrigir como ainda estou recebendo o erro acima quando é uma matriz