none
Obtener resultado desde c# por URL RRS feed

  • Pregunta

  • Voy a simplificar la pregunta

    yo pongo en la URL la siguiente dirección (que corresponde a una hoja de calculo de google)

      (a)   https://sheets.googleapis.com/v4/spreadsheets/1QVTIFH7Jk/values/b1?key=AIzaSyCBCZCKd4Oxdh

    y obtengo el resultado 

    {
      "range": "'Hoja 1'!B1",
      "majorDimension": "ROWS",
      "values": [
        [
          "198afbdc1f2d4ae9874ca70db823525a"
        ]
      ]
    }

    o sea, lo que necesito es consultar desde c# a la dirección que puse en (a);

    y cargar en una variable string el valor que subraye. 

    198afbdc1f2d4ae9874ca70db823525a

    Como puedo hacer si me dan una mano, gracias

       

    lunes, 18 de junio de 2018 1:33

Respuestas

  • Con Newtonsoft.Json puede deserializar ese JSON y leer el valor.

    Declare una clase que represente exactamente ese JSON.  Normalmente en .Net la recomendación es escribir nombres de métodos, propiedades y clases en formato Pascal (Pascal case), pero eso contradice los nombres de las propiedades en el JSON, que están escritas en formato de camello (camel case).  Espero que en un par de semanas pueda publicar en mis repositorios GIT un proyecto que contendrá unas clases para ayudar con este detalle, pero mientras tanto, violemos la regla de .net para simplificar el asunto.

    public class SpreadSheetObject
    {
        public string range { get; set; }
        public string majorDimension { get; set; }
        public string[] values { get; set; }
    }

    Ahora puede usar la biblioteca de clases Newtownsoft.Json (disponible desde NuGet) para deserializar el objeto.

    HttpWebRequest wReq = WebRequest.Create("https://...") as HttpWebRequest;
    string json = null;
    using (HttpWebResponse wResp = wReq.GetResponse())
    {
        using (Stream s = wResp.GetResponseStream())
        {
            using (TextReader tr = new StreamReader(s))
            {
                json = tr.ReadToEnd();
            }
        }
    }
    SpreadSheetObject so = JsonConvert.Deserialize<SpreadSheetObject>(json);
    //Listo.  El valor que busca es:
    string v = so.values[0];

    No lo probé, pero espero que todo bien.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    lunes, 18 de junio de 2018 1:58
    Moderador