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í:
<code>{"description": "Test", "contacts": ["[email protected]", "[email protected]"], "enabled": true} </code>
o esto:
<code>{"description": "Test", "contacts": "[email protected], [email protected]", "enabled": true} </code>
Como puede ver, el campo de contactos es:
una cadena (con elementos separados por comas)una serie de cadenas.Quiero convertir a esta clase:
<code>public class MyJob { public string description; public string[] contacts; public string enabled; } </code>
cuando intento asignar solo a una cadena (cambiando lo anterior a: contactos de cadena pública;) usando JavascriptSerializer ():
<code>var serializer = new JavaScriptSerializer(); string contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts; </code>
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:
<code> var contacts = serializer.Deserialize<MyJob>(theAboveJsonString).contacts; if (contacts is string) { jobInfo.contacts = contacts; } else { jobInfo.contacts = String.Join("; ", contacts ); } </code>
pero eso no parece arreglarlo ya que todavía estoy recibiendo el error anterior cuando es una matriz