【发布时间】:2012-07-06 18:33:27
【问题描述】:
我正在尝试使用 Json.NET 来序列化一个子类。生成的 json 包含超类的序列化属性,但不包含子类对象的属性。
这似乎与我发现的here on SO 的问题有关。但是不得不写一个JsonConverter 似乎有点矫枉过正。
示例子类:
public class MySubclass : List<string>
{
public string Name { get; set; }
}
序列化示例:
MySubclass myType = new MySubclass() { Name = "Awesome Subclass" };
myType.Add("I am an item in the list");
string json = JsonConvert.SerializeObject(myType, Newtonsoft.Json.Formatting.Indented);
生成的 json:
[
"I am an item in the list"
]
我预计结果会更像这样:
{
"Name": "Awesome Subclass",
"Items": [
"I am an item in the list"
]
}
也许我只是在序列化时没有使用正确的配置。有人有什么建议吗?
【问题讨论】:
-
出于多种原因,我试图摆脱 XmlSerializer,但主要是为了性能。目前我正在使用 XmlSerializer 序列化对象并实现
IXmlSerializable,因为我有复杂的通用接口属性正在序列化(如果不实现IXmlSerializable,就无法反序列化)。 Json.NET 速度很快,它允许我序列化/反序列化同一个对象,而无需进行自定义序列化。缺点是我刚刚发现它不会序列化IEnumerable的子类上的属性。