在ASP.NET Core 3中,要从JSON中移除属性,可以使用Nullable Reference Types功能。下面是一个示例代码:
using System.Text.Json.Serialization;
public class MyModel
{
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
public string? Property1 { get; set; }
public string? Property2 { get; set; }
}
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
在上面的示例中,MyModel
类有两个可空属性Property1
和Property2
。Property1
使用[JsonIgnore]
属性来指定在将对象序列化为JSON时忽略该属性。Property2
没有指定任何特性,所以默认情况下将包含在JSON中。
在Startup
类的ConfigureServices
方法中,我们使用AddJsonOptions
来配置JSON序列化选项。JsonSerializerOptions.DefaultIgnoreCondition
属性设置为JsonIgnoreCondition.WhenWritingNull
,这意味着当属性的值为null时,属性将被忽略。
这样配置后,当使用JsonSerializer.Serialize
方法将对象序列化为JSON时,将自动忽略可空属性的null值,从而移除属性。
注意:使用可空引用类型时,需要在.csproj文件中启用Nullable Reference Types功能,添加
。
这样,就可以从JSON中移除属性了。