¿Cómo iba a leer en un archivo 'anidada' JSON con 'DataContractJsonSerializer' en C # .NET (teléfono win7)?
-
11-10-2019 - |
Pregunta
Tengo un problema en el caso de mi archivo JSON es similar al siguiente
{ "Números": "45387", "Palabras": "cubos espaciales"}
puedo leerlo muy bien, sin embargo si se ve como esto:
{ "principal": { "Números": "45387", "palabras": "cubos espaciales"}, España "Algo": { "Números": "12345", "Palabras": "Kransky"}}
No me sale de vuelta información. No tengo idea de cómo cambiar entre Principal y algo! Carga de un JSON con esta información 'anidada' utilizando este código,
var ser = new DataContractJsonSerializer(typeof(myInfo));
var info = (myInfo)ser.ReadObject(e.Result);
// La clase siendo utilizando para mantener mi información
[DataContract]
public class myInfo
{
[DataMember(Name="Numbers")]
public int number
{ get; set; }
[DataMember(Name="Words")]
public string words
{ get; set; }
}
Hace que la clase de volver vaciar.
He intentado añadir el nombre del grupo a DataContract por ejemplo. [DataContract, Name = "principal"], pero esto todavía hace que los valores de las clases para estar vacío.
También he intentado añadir "principal" para el serializador overloader por ejemplo. Ser var = new DataContractJsonSerializer (typeof (MyInfo), "principal");
Esto provoca un error: Esperando elemento 'principal' del espacio de nombres '' .. Se encontró 'Elemento' con el nombre de 'root', espacio de nombres ''
.
Yo prefiero sólo tiene que utilizar el lector JSON suministrado. He mirado en json.NET pero he encontrado la documentación a ser pesados ??en la escritura de JSON y con escasa información sobre la lectura.
Seguramente me estoy perdiendo algo simple aquí!
Solución
Se podría añadir una clase contenedora:
[DataContract]
public class Wrapper
{
[DataMember]
public myInfo Main { get; set; }
[DataMember]
public myInfo Something { get; set; }
}
Ahora usted podría deserializar la parte posterior JSON a esta clase de contenedor y el uso de las dos propiedades para acceder a los valores.