Why asp.net core sending empty object as response?

In my case, I just added this in my ConfigureServices method in Startup.cs (I am using Dot Net 5.0)

services.AddControllers().AddNewtonsoftJson();

System.Text.Json currently does not support serialization/deserialization of fields and non-parameter-less, non-default constructors.

Your example model uses both fields and a non-default constructor. If you need to use a custom constructor for some reason, you would need to implement your own JsonConverter<T> to support that. This doc might be helpful for that: https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-migrate-from-newtonsoft-how-to#deserialize-to-immutable-classes-and-structs

Only public properties with public getters/setters are supported along with the default, parameter-less constructor (what is referred to as Plain_old_CLR_object (POCO)). Note: If you are only serializing (i.e. writing), the setters generally don't have to be public.

Properties are different from fields (and contain getters/setters).

Here is the fix:

public class City
{
    public string CityName { get; set; }
    public string AssociatedCities { get; set; }
    public string Province { get; set; }
    public int Status { get; set; }
}