none
Leer Json en Windows Phone 8.1 con c# RRS feed

  • Pregunta

  • Hola Estimados:

    Ante todo pido disculpas si este no es el foro correcto para hacer esta pregunta. Estoy desarrollando un aplicativo para Windows Phone 8.1 con c# en Visual Studio Community 2015, traigo los datos en forma correcta desde un servidor web con la instruccion:

     WebRequest NeWRequerimiento = WebRequest.Create(laUrl);

    los leo con:  string responseFromServer = reader.ReadToEnd();

    y obtengo el string: "[{\"CodEmpleado\":\"1\",\"Nombre\":\"MAI LORENA\",\"Estado\":\"0\",\"Cuil\":\"23295202904\"}]"

    mediante la isntruccion: object JsonDe = JsonConvert.DeserializeObject(responseFromServer);

    obtengo: {[
      {
        "CodEmpleado": "1",
        "Nombre": "MAI LORENA",
        "Estado": "0",
        "Cuil": "23295202904"
      }
    ]}

    que por lo que entiendo es un archivo en formato Json.

    La pregunta es como puedo tomar esos datos desde mi aplicativo, por ejemplo mostrarlos en cajas de textos (TextBox).

    Desde ya muchas gracias.

    Italo.

    lunes, 14 de noviembre de 2016 21:55

Todas las respuestas

  • Hola Italo Juan,

    Podrías crear una Clase con los mismos atributos y al deserealizar el json convertirla a la misma clase, algo como :

    ** Modificar los tipos según el caso

    public class MiClase
    {
      public int CodEmpleado { get; set; }
      public string Nombre { get; set; }
      public int Estado { get; set; }
      public string Cuil { get; set; }
    }

    Y al deserealizar :

     MiClase JsonDe = JsonConvert.DeserializeObject<MiClase>(responseFromServer);
    
     if(JsonDe != null)
     {
         textBox1.Text = JsonDe.CodEmpleado; 
     }

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    martes, 15 de noviembre de 2016 3:37
  • Hola Joel: Muchas gracias por responder, estoy intentando poner en practica la solución que me sugerís, pero el problema esta que el Json que me devuelve el aplicativo esta "sucio" con un caracater  "\" y eso hace que que salga por una excepcion no controlada... te la pego para ver si me podes ayudar.

    {"Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'MbProductosSalon.Operador' because the type requires a JSON object (e.g. {\"name\":\"value\"}) to deserialize correctly.\r\nTo fix this error either change the JSON to a JSON object (e.g. {\"name\":\"value\"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.\r\nPath '', line 1, position 1."}

    el string (Json)devuelto es: "[{\"CodEmpleado\":\"1\",\"Nombre\":\"MAI LORENA\",\"Estado\":\"0\",\"Cuil\":\"23295202904\"}]" Comparado con un aplicativo hecho en VB las \ no irían, hice un Replace pero no me funciono ya que dichas barras parecen ser caracteres especiales.

    Saludos.!

    miércoles, 16 de noviembre de 2016 2:05
  • Hola Italo Juan,

    Eso lo resuelve el Json.Convert, el problema es que tu json devuelve un arreglo, por lo que tendrías que deserealizar a un MiClase[].

    string responseFromServer = 
    "[{\"CodEmpleado\":\"1\",\"Nombre\":\"MAI LORENA\",\"Estado\":\"0\",\"Cuil\":\"23295202904\"}]";
    MiClase[] JsonDe = JsonConvert.DeserializeObject<MiClase[]>(responseFromServer);
    
    if (JsonDe.Length > 0)
    {
        MiClase mc = JsonDe[0];  //Obtiene el primer objeto
    
        textBox1.Text = mc.CodEmpleado.ToString();
        textBox2.Text = mc.Nombre;
        textBox3.Text = mc.Estado.ToString();
        textBox4.Text = mc.Cuil;
    }

    Resultado :

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    miércoles, 16 de noviembre de 2016 2:26
  • JC NaupaCrispín... Realmente muchas gracias por tu gran ayuda...!!!! horas y horas de pruebas y error, lecturas por todos lados sin poder resolver este tema. Con la teoría leída hasta el momento no me ubiera dado cuenta nunca de que el Json era un arreglo.

    Una vez mas, muchas gracias.

    saludos.!!!

    Italo

    miércoles, 16 de noviembre de 2016 4:41