none
sacar variables de un json

    Pregunta

  • tengo una consulta que me da como resultado el siguiente json:

    {
      "ip":"x.x.x.x",
      "type":"ipv4",
      "continent_code":"SA",
      "continent_name":"South America",
      "country_code":"CO",
      "country_name":"Colombia",
      "region_code":"DC",
      "region_name":"Bogota D.C.",
      "city":"Bogot\u00e1",
      "zip":"111311",
      "latitude":4,
      "longitude":-74,
      "location":{
        "geoname_id":3688689,
        "capital":"Bogot\u00e1",
        "languages":[
          {
            "code":"es",
            "name":"Spanish",
            "native":"Espa\u00f1ol"
          }
        ],
        "country_flag":"co.svg",
        "country_flag_emoji":"\ud83c\udde8\ud83c\uddf4",
        "country_flag_emoji_unicode":"U+1F1E8 U+1F1F4",
        "calling_code":"57",
        "is_eu":false
      }
    }

    el codigo para este json es el siguiente:

    var resultado = responseTask.Result;
                    if(resultado.IsSuccessStatusCode)
                    {
                        
                        var readTask = resultado.Content.ReadAsAsync<dynamic>().Result;
                        
                        List<LocalizarUsuario> Localizar = JsonConvert.DeserializeObject<List<LocalizarUsuario>>(readTask);
                    }

    y mi objeto LocalizarUsuario es el siguiente:

     public class LocalizarUsuario
        {
            public string ip { get; set; }
            public string type { get; set; }
            public string continent_code { get; set; }
            public string continent_name { get; set; }
            public string country_code { get; set; }
            public string country_name { get; set; }
            public string region_code { get; set; }
            public string region_name { get; set; }
            public string city { get; set; }
            public string zip { get; set; }
            public string latitude { get; set; }
            public string longitude { get; set; }
    }

    Cuando intento guardar el json en una lista, me sale el siguiente error:

    La mejor coincidencia de método sobrecargado para 'Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<LocalizarMVC.Controllers.LocalizarUsuario>>(string)' tiene algunos argumentos no válidos

    Este error me da en la linea donde defino la lista localizar, no se que estoy haciendo mal, lo que necesito finalmente es guardar en una variables string el valor de los items de mi objeto LocalizarUsuario, alguien me podria dar una idea de que estoy haciendo mal?

    viernes, 11 de mayo de 2018 1:14

Todas las respuestas

  • Creo que el problema reside en que tu JSON no representa una lista, sino un único objeto (ya que empieza por "{" y no por "[").

    Prueba a deserializarlo hacia LocalizarUsuario en lugar de List<LocalizarUsuario>.

    viernes, 11 de mayo de 2018 5:49