2

我正在使用 YamlDotNet 序列化具有引用和值类型的对象。我想要完成的是我的零整数值保留在输出的 yaml 中,但空值将被丢弃。EmitDefaults 看起来会丢弃数字值的“0”。我理解 null 是引用类型的默认值。Json.Net 通过将其分解为以下属性解决了这个问题:

NullValueHandling = NullValueHandling.Ignore,

DefaultValueHandling = DefaultValueHandling.Ignore,

有什么办法可以完成以下任务吗?

class foo 
{
   int index {get;set;}
   string bar {get;set;}
}

new foo { index =0; bar = null } 
would yield the following yaml:
   index: 0

new foo { index =0; bar = "bar" } 
would yield the following yaml: 
   index: 0
   bar: bar

谢谢

4

1 回答 1

1

不确定这是您想要的,但这就是我强制序列化所有默认值的方式:

    public override string ToString()
    {
        var builder = new SerializerBuilder();
        builder.EmitDefaults(); // Force even default values to be written, like 0, false.
        var serializer = builder.Build();
        var strWriter = new StringWriter();
        serializer.Serialize(strWriter, this);
        return strWriter.ToString();
    }
于 2017-03-06T22:57:31.500 回答