如何根据条件告诉JsonWriter不执行任何操作?

时间:2019-04-30 12:55:14

标签: c# json json.net

我正面临一种情况,在我的JsonConverter中,我希望JsonWriter不执行任何操作。

我的第一次尝试是写:

public override void WriteJson(JsonWriter writer, IFoo<decimal> degrees, JsonSerializer serializer)
{
    var enumerable = Convert(degrees);
    if (enumerable != null)
        JToken.FromObject(enumerable).WriteTo(writer);
}

但它引发以下错误

  

状态为Property的令牌PropertyName将导致无效的JSON对象。路径'foo [0] .bar [1]。'。

我可以通过添加带有writer.WriteNull()的else来避免错误,如下所示:

public override void WriteJson(JsonWriter writer, IFoo<decimal> degrees, JsonSerializer serializer)
{
    var enumerable = Convert(degrees);
    if (enumerable != null)
        JToken.FromObject(enumerable).WriteTo(writer);
    else
        writer.WriteNull();
}

json输出为:

{
    "foo": null
}

但是我想要的是一个没有foo的对象:{}

我知道我可以使用NullValueHandling.Ignore设置属性,但是在某些情况下,我想保留null

我想要类似的东西

public override void WriteJson(JsonWriter writer, IFoo<decimal> degrees, JsonSerializer serializer)
{
    var enumerable = Convert(degrees);
    if (enumerable != null)
        JToken.FromObject(enumerable).WriteTo(writer);
    else
        writer.Skip(); // or writer.Ignore() or writer.DoNothing() or whatever
}

如何告诉JsonWriter什么也不做?

0 个答案:

没有答案