我正面临一种情况,在我的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什么也不做?