我目前正在使用JSON.NET开发ASP.NET WebAPI。我希望减少流量,并希望忽略模型的某些属性进行序列化,即我不想在JSON响应中返回它们,但我希望在它们传递到我的端点时接受它们。
示例类
public class User {
public int Id { get; set; }
public string Name { get; set; }
public string Role { get; set; }
}
用例
- 我有一个POST端点,它将用户模型作为参数。请求包含名称和角色。这些道具应该解析到我的User中
- 我有一个返回User的GET端点。我只希望响应包含Id和Name。应忽略角色
问题
当我使用JSON.NET中的JsonIgnore属性时,该属性将被完全忽略。它不是为我的响应序列化的,但当我将JSON用户发布到我的端点时,我的用户的道具为null。
有没有办法只为了序列化而忽略道具?
提前谢谢!
这正是数据传输对象的用途。您应该为不同的目的创建不同的DTO(GET/POST)。
当您想忽略它时,使用它并传递null
!
[JsonProperty("property_name", NullValueHandling=NullValueHandling.Ignore)]