Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

246
Vistas
¿Por qué asp.net core envía un objeto vacío como respuesta?

Cuando depuro el código en VS, la lista de ciudades, que estoy devolviendo, tiene 3 objetos junto con las propiedades. Cuando llamo a este punto final, recibo una respuesta de 3 elementos de lista de objetos vacíos.

Cómo resolver este problema?

Clase de modelo:

 public class City { public string CityName; public string AssociatedCities; public string Province; public int Status; public City(string cityName, string associatedCities, string province, int status) { this.CityName = cityName; this.AssociatedCities = associatedCities; this.Province = province; this.Status = status; } }

punto final:

 [HttpGet] [Route("cities")] public ActionResult<IEnumerable<City>> GetCities() { return Ok(Cities); }

Así es como estoy llamando al punto final

 getCities() { this.http.get<City[]>('/api/wizard/cities') .subscribe(result => { console.log(result); this.cities = result; }, error => console.error('Something went wrong : ' + error)); }

La respuesta que recibo: Resultado de la respuesta

La respuesta que se necesita:

 [ { "SearchCity": "Toronto", "AssociatedCities": "Ajax, Whitby, Toronto, Mississauga, Brampton", "Province": "ON", "Status": 1 }, { "SearchCity": "Vancouver", "AssociatedCities": "Vancouver, Vancouver City", "Province": "BC", "Status": 1 } ]

Ya probé esto: Fresh ASP.NET Core API devuelve objetos JSON vacíos

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

System.Text.Json actualmente no admite la serialización o deserialización de campos y constructores no predeterminados y sin parámetros.

Su modelo de ejemplo usa ambos campos y un constructor no predeterminado . Si necesita usar un constructor personalizado por algún motivo, deberá implementar su propio JsonConverter<T> para admitirlo. Este documento podría ser útil para eso: https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-migrate-from-newtonsoft-how-to#deserialize-to-immutable- clases y estructuras

Solo se admiten propiedades públicas con getters/setters públicos junto con el constructor predeterminado sin parámetros (lo que se conoce como Plain_old_CLR_object (POCO) ). Nota: si solo está serializando (es decir, escribiendo), los configuradores generalmente no tienen que ser públicos.

Las propiedades son diferentes de los campos (y contienen captadores/establecedores).

Aquí está la solución:

 public class City { public string CityName { get; set; } public string AssociatedCities { get; set; } public string Province { get; set; } public int Status { get; set; } }
over 4 years ago · Santiago Trujillo Denunciar

0

En mi caso, acabo de agregar esto en mi método ConfigureServices en Startup.cs (estoy usando Dot Net 5.0)

 services.AddControllers().AddNewtonsoftJson();
over 4 years ago · Santiago Trujillo Denunciar

0

Basado en el hecho de que todo lo que hace su acción es devolver Cities , que presumiblemente es una propiedad o un campo definido en su controlador, voy a tomar una foto en la oscuridad y asumir que está configurando eso en otra solicitud y esperándolo. estar todavía allí en esta petición. Así no es cómo funciona. El controlador se crea una instancia y se elimina con cada solicitud, por lo que cualquier cosa que se establezca durante la vigencia de una solicitud no sobrevivirá. Como resultado, Cities no tiene nada en esta solicitud, por lo que obtiene una respuesta vacía.

Si necesita una lista de ciudades en la acción, debe consultarlas en esa acción . Además, por lo que vale, System.Text.Json actualmente no admite la serialización de campos, como otros han mencionado en los comentarios, pero aún puede usar JSON.NET en su lugar, que sí lo hace. Consulte: https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.1&tabs=visual-studio#jsonnet-support

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda