不同的NullValueHandling用于asp.net核心Web应用程序中的序列化和反序列化

THT*_*HTP 7 c# asp.net json.net

我正在尝试使用实现INotifyPropertyChanged的视图模型来实现PATCH方法.这就是为什么我希望NullValueHandling为反序列化的NullValueHandling.Include(因此显式定义的空值将触及setter并将被正确处理).

同时,我想摆脱GET方法输出中的空值.所以我在序列化期间需要NullValueHandling为NullValueHandling.Ignore.

有没有办法使用asp.net核心网络应用程序的标准机制来实现这样的结果?

现在我正在使用此代码初始化Json转换器:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddMvc(...)
        .AddJsonOptions(o =>
        {
            o.SerializerSettings.NullValueHandling = NullValueHandling.Include;
            ...
        });
    ...
}
Run Code Online (Sandbox Code Playgroud)

并且无法找到任何方法为序列化和反序列化分别指定空值处理.这就是为什么我必须使用两个单独的模型,一个用于具有默认序列化的GET请求,一个用于具有[JsonProperty(NullValueHandling = NullValueHandling.Include)]属性和自定义get和set方法的PATCH请求.

任何想法如何只用一个模型解决问题?

谢谢你的帮助!