En C #, ¿cómo puedo deserializar este json cuando un campo puede ser una cadena o una matriz de cadenas?
Tengo un sitio web asp.net-mvc y estoy leyendo en una cadena Json de una base de datos. Aquí está el siguiente json en una base de datos. Podría verse así:
{"description": "Test", "contacts": ["joe@gmail.com", "bill@yahoo.com"], "enabled": true}
o esto:
{"description": "Test", "contacts": "joe@gmail.com, bill@yahoo.com", "enabled": true}
Como puede ver, el campo de contactos es:
una cadena (con elementos separados por comas)una serie de cadenas.Quiero convertir a esta clase:
public class MyJob
{
public string description;
public string[] contacts;
public string enabled;
}
cuando intento asignar solo a una cadena (cambiando lo anterior a: contactos de cadena pública;) usando JavascriptSerializer ():
var serializer = new JavaScriptSerializer();
string contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts;
Me sale este error en los casos en que es una matriz:El tipo 'System.String' no es compatible con la deserialización de una matriz.
¿Cuál es la mejor manera de deserializar esto para manejar el caso de:
una cuerdauna serie de cadenas.para el campo de contacto. Estoy feliz de poner cualquier lógica condicional necesaria. .
Intenté esto:
var contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts;
if (contacts is string)
{
jobInfo.contacts = contacts;
}
else
{
jobInfo.contacts = String.Join("; ", contacts );
}
pero eso no parece arreglarlo ya que todavía estoy recibiendo el error anterior cuando es una matriz