【发布时间】:2020-03-25 04:55:07
【问题描述】:
ASP.Net Core 2.2 允许使用MvcJsonOptions.SerializerSettings 属性设置序列化器设置。问题是它影响输入和输出。有没有办法为输入(反序列化)和输出(序列化)提供单独的选项?特别是,我需要为 NullValueHandling 设置设置不同的行为:在反序列化客户端 json 时忽略不可空字段的空错误,但在序列化结果时保留已定义模型字段的空值。
例如,我有一个请求的 C# 模型:
public class SomeEntity
{
public int Id { get; set; }
public int? ParentId { get; set; }
public string Name { get; set; }
}
然后输入 JSON:{ id: null, parentId: null, name: "test" }。 NullValueHandling.Include 的反序列化失败,但适用于 NullValueHandling.Ignore。
但是当我序列化一个像这样的实体时
new SomeEntity
{
Id = 1,
ParentId = null,
Name = "test"
}
它使用NullValueHandling.Include:{ id: 1, parentId: null, name: "test" } 保持空值,但使用NullValueHandling.Ignore:{ id: 1, name: "test" } 擦除它。
我需要实现输入的“忽略”场景和输出的“包含”场景。
【问题讨论】:
标签: c# .net asp.net-core json.net asp.net-core-2.2