如何在 Web API 中返回相关数据,以便 json 不返回空值

本文关键字:返回 数据 以便 json 空值 Web API | 更新日期: 2023-09-27 17:57:07

namespace POS_Backend_.Controllers
{
    public class hotelapiController : ApiController
    {
        private POSDBEntities db = new POSDBEntities();
        // GET: api/hotelapi
        public IList<HotelsDetailsDto> GetHotels()
        {
            return db.Hotels.Select(p => new HotelsDetailsDto 
            {   Id = p.Id,
                Name = p.Name,
                Address = p.Address,
                Description = p.Description,
                Offering = p.Offering,
                Gps = p.Gps,
                NumberOfRooms = p.NumberOfRooms,
                Commission = p.Commission,
                Rating = p.Rating,    
                HotelTypeName=p.HotelTypeName,
                Image = p.Image,
                LocationId = p.LocationId,
            }).ToList();
        }

我得到以下结果:

{
    "Id": 2,
    "Name": "Meilkles",
    "Address": "samora machel avenue",
    "Description": "luxury hotel",
    "Offering": "swimming",
    "Gps": "3672.22",
    "NumberOfRooms": 5444,
    "Commission": 65,
    "HotelTypeName": "Lodge",
    "Rating": 3,
    "LocationId": 1,
    "Image": "~/Banners/download(7).jpg",
    "Comments": null,
    "Favourites": null,
    "Location": null,
    "HotelType": null,
    "Locations": null
}

如何在 Web API 中返回相关数据,以便 json 不返回空值

为什么不创建一个没有 HotelsDetailsDto 属性为空的类 Hotel,然后让类 HotelsDetailsDto 从 Hotel 继承。而是返回列表。

这将起作用,除非HotelsDetailsDto是通过linq to SQL动态生成的。在这种情况下,请提供酒店和酒店之间的映射详细信息D以生成列表

把这段代码放在 WebApiConfig 中:

此代码在应用程序级别返回 json 时删除所有null属性

config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore};

如果要从特定模型中删除null属性,请使用以下代码:

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string Comments{ get; set; }

希望这有帮助。