Mig*_*ura 29 json json.net asp.net-core-3.0 .net-core-3.0 system.text.json
在 ASP.Net Core 2.2 中使用 JSON.Net 时,当序列化为 JSON 时,当其值为 null 时,我能够忽略属性:
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public DateTime? Created { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是,当使用内置于 JSON (System.Text.Json) 的新 ASP.Net Core 3.0 时,如果某个属性的值为 null,我找不到可以忽略该属性的等效属性。
我只能找到 JsonIgnore。
我错过了什么吗?
090*_*9EM 20
我在看 .Net Core 3.1,它应该忽略空值
services.AddControllers().AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
});
Run Code Online (Sandbox Code Playgroud)
请注意,以上不是每个属性/属性,尽管有一个属性可能有用JsonIgnoreAttribute
另一种解决您的问题的方法可能是JsonConverterAttribute,有关如何编写自己的转换器的信息在这里
dbl*_*ood 11
如果您想要在 JSON 序列化期间忽略空值的属性级别控制,对于 Net Core 3.1,您必须编写一个自定义转换器。Newtonsoft.Json 迁移文档中描述了一些示例。
对于使用 Newtonsoft.Json 声明的功能来说,这是一个很大的麻烦。您可以通过在 Startup.ConfigureServices() 中指定尽可能多的内容来指定使用 Newtonsoft.Json 。
services.AddControllers()
.AddNewtonsoftJson();
Run Code Online (Sandbox Code Playgroud)
如文档所述,您需要添加Microsoft.AspNetCore.Mvc.NewtonsoftJson包。
Mor*_*iya 10
将此添加到您的启动中应该会有所帮助,尽管它不是每个属性也不是一个属性。
services.AddMvc()
.AddJsonOptions(options =>{ options.JsonSerializerOptions.IgnoreNullValues = true; });
Run Code Online (Sandbox Code Playgroud)
这是在 .Net 5 上修复的
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
Run Code Online (Sandbox Code Playgroud)
请参阅下面的更新
https://github.com/dotnet/runtime/issues/41313
https://github.com/dotnet/runtime/issues/30687
如果你还在 .net core 3.1 中使用 Newtonsoft.Json,你需要像下面这样的配置。
services
.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
})
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20570 次 |
最近记录: |