如何忽略自定义json转换器c#中的空字段?

时间:2018-10-30 20:54:21

标签: c# json

我需要忽略我自定义的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);
    }
}

谢谢大家。

2 个答案:

答案 0 :(得分:0)

编辑: 您可以在基类上使用NullValueHandling设置,并从基类继承其他类。

[JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)] public class BaseClass{}

答案 1 :(得分:0)

在dotnet核心mvc应用程序中,您可以在Option Explicit Public Sub DefineNamedRanges() Dim WSheet As Worksheet Dim ShtName As Variant For Each WSheet In Worksheets ShtName = WSheet.Name If ShtName <> "Summary Report" Then WSheet.Names.Add Name:=ShtName & "Close", _ RefersTo:="=OFFSET(ShtName!$A$2,0,0,COUNTA(ShtName!$A$2:$A$1048576),COUNTA(ShtName!$2:$2))" End If Next WSheet End Sub 之后调用AddJsonOptions(),并为它提供忽略json中AddMvc()值的选项。但是,这会影响所有通过请求管道的Json结果。

以下代码可以添加到您的null

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;
}