尝试使用YAMLDOTNET的序列化程序,遇到一些问题,而对象不仅仅是字符串,而且内部还有一个特殊的对象。
序列化时,我会得到一个{}字符串。例如,如果在Serializing an object graph示例中我们定义了一个结构地址。然后我们创建一个类Address Address的新对象,最终在收据中分配,结果也将是yaml文件上地址字段的{}。
还可以看到示例代码here。这将创建一个如下所示的输出:
receipt: Oz-Ware Purchase Invoice
date: 2007-08-06T00:00:00.0000000
customer:
given: Dorothy
family: Gale
items:
- part_no: A4786
descrip: Water Bucket (Filled)
price: 1.47
quantity: 4
- part_no: E1628
descrip: High Heeled "Ruby" Slippers
price: 100.27
quantity: 1
bill_to: &o0 {}
ship_to: *o0
所以bill_to将显示为{}
答案 0 :(得分:1)
YamlDotNet.Serialization.Serializer不会将字段序列化为YAML输出。它适用于示例,因为它使用的是动态对象,而街道,城市和州是该对象的属性。
如果您将地址中的字段更改为属性,则会将其序列化,例如
public struct Address
{
public string street { get; set; }
public string city { get; set; }
public string state { get; set; }
}
使用属性而不是公共字段也是最佳做法。