.Net Core:控制Controller.Json方法生成的Json

时间:2016-10-11 10:51:47

标签: json asp.net-core

默认情况下,Controller.Json为类的每个公共成员生成JSON。如何更改此设置以便忽略某些成员。请注意,我使用的是.Net Core。

示例:

[HttpGet("/api/episodes")]
public IActionResult GetEpisodes()
{
  var episodes = _podcastProvider.Get();

  return Json(episodes);
}

感谢。

2 个答案:

答案 0 :(得分:6)

您可以使用[JsonIgnore]命名空间中可用的Newtonsoft.Json属性,如下所示:

public class Model
{
   public int Id { get; set; }
   public string Name { get; set; }
   [JsonIgnore]
   public int Age { get; set; }
}

答案 1 :(得分:3)

  

如何更改此设置以便忽略某些成员?

在封面下,这使用了Newtonsoft.Json。有两种方法可以做到这一点。

  1. 使用JsonIgnore属性并标记要省略的属性。
  2. 让您的episodes类将自己定义为“选择加入”,这意味着只有标有JsonProperty的属性才会被序列化。 [JsonObject(MemberSerialization.OptIn)]
  3. 这取决于您需要省略的属性数量与序列化的数量。

    public class Episode 
    {
        public int Id { get; }
        [JsonIgnore] public string Name { get; }
        [JsonIgnore] public Uri Uri { get; }
        [JsonIgnore] public long Length { get; }
    }
    

    以上将产生与此相同的JSON:

    [JsonObject(MemberSerialization.OptIn)]
    public class Episode 
    {
        [JsonProperty]
        public int Id { get; }
        public string Name { get; }
        public Uri Uri { get; }
        public long Length { get; }
    }