JSON.NET - 忽略序列化的属性

时间:2016-05-02 18:59:43

标签: c# json serialization asp.net-web-api json.net

我目前正在使用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模型作为参数。该请求包含名称和角色。这些道具应该解析为我的用户。
  • 我有一个返回用户的GET端点。我只希望响应包含Id和Name。角色应该被忽略。

问题

当我使用JSON.NET中的JsonIgnore属性时,该属性将被完全忽略。它没有为我的响应序列化,但是当我将JSON用户发布到我的端点时,我的User的prop是null。

有没有办法忽略仅用于序列化的道具?

提前谢谢!

2 个答案:

答案 0 :(得分:2)

这正是数据传输对象的用途。您应该为不同的目的创建不同的DTO(GET / POST)。

答案 1 :(得分:0)

当你想忽略它时,使用它并传递null

[JsonProperty("property_name", NullValueHandling=NullValueHandling.Ignore)]