如何在定制的json转换器中忽略空字段?

juzqafwq  于 5个月前  发布在  其他
关注(0)|答案(3)|浏览(63)

我需要忽略我定制的json转换器中的所有null字段。
我的转换器继承自JsonConverter,我已经覆盖了WriteJson方法。
我需要为我的转换器配置此设置NullValueHandling.Ignore,但我不知道如何设置。

public class CommonJsonConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return true;
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        //i dont need it now
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
    var maclasse = ( Maclasse ) value ;
        writer.WritePropertyNameAndValuer("StringValue",maclasse.id);
    writer.WritePropertyNameAndValuer("StringValue",maclasse.nom);
    }
}

字符串
Thnak you All.

tjvv9vkg

tjvv9vkg1#

编辑:你可以在基类上使用NullValueHandling设置,并从它继承其他类。
第一个月

64jmpszr

64jmpszr2#

.Net 7.0中,将以下行添加到program.cs中:

builder.Services
    .AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
    })
    ;

字符串

omqzjyyz

omqzjyyz3#

在dotnet核心mvc应用程序中,可以在AddMvc()之后调用AddJsonOptions(),并为它提供忽略json中null值的选项。然而,这会影响通过请求管道的所有Json结果。
下面的代码可以添加到您的startup.cs

public void ConfigureServices(IServiceCollection services)
{
    // needs a reference in your `csproj` file to `Microsoft.AspNetCore.Mvc.Formatters.Json`
    services.AddJsonOptions(Startup.SetJsonOptions);
}

private static void SetJsonOptions(MvcJsonOptions options)
{
    options.SerializerSettings.Converters.Add(new CustomConverter());
    options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
}

字符串
对于一个普通的控制台应用程序,可能会在你的主入口点(应用程序设置)的某个地方有这样的东西:

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
    NullValueHandling = NullValueHandling.Ignore
};

相关问题