gpt4 book ai didi

c# - 忽略 web api 中序列化程序的空值和默认值

转载 作者:太空狗 更新时间:2023-10-29 22:00:17 26 4
gpt4 key购买 nike

我想忽略 Json 序列化中为 null 的那些属性。为此,我在我的 webapi.config 文件中添加了这一行。

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

public static void Register(HttpConfiguration config)
{
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{identifier}",
defaults: new { identifier = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling= DefaultValueHandling.Ignore };
}

但它并没有忽略那些为空的属性。

这是我的类(class)

public class UserProfile
{
[JsonProperty("fullname")]
public string FullName { get; set; }

[JsonProperty("imageid")]
public int ImageId { get; set; }

[JsonProperty("dob")]
public Nullable<DateTime> DOB { get; set; }
}

是web api返回的Json

    {
"fullname": "Amit Kumar",
"imageid": 0,
"dob": null
}

我没有给dob和imageid赋值。

我关注这个Link , 但它并没有解决我的问题。

最佳答案

通过查看 Newtonsoft.Json source code我相信装饰类属性的 JsonPropertyAttribute 会覆盖 JsonSerializerSettings 中指定的默认 NullValueHandling

要么删除此类属性(如果您想使用全局定义的 NullValueHandling),要么显式指定 NullValueHandling:

public class UserProfile
{
[JsonProperty("fullname")]
public string FullName { get; set; }

[JsonProperty("imageid")]
public int ImageId { get; set; }

[JsonProperty("dob", NullValueHandling = NullValueHandling.Ignore)]
public Nullable<DateTime> DOB { get; set; }
}

关于c# - 忽略 web api 中序列化程序的空值和默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36548308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com