【发布时间】:2012-11-30 18:19:33
【问题描述】:
我正在尝试将 .NET 类序列化为 JSON,其中包含一个属性,该属性是泛型类型的通用列表。
我的泛型类型定义如下:
public interface IFoo {}
public class Foo<T>: IFoo
{
public string Name {get; set;}
public string ValueType {get; set;}
public T Value {get; set:}
public Foo(string name, T value)
{
Name = name;
Value = value;
ValueType = typeof(T).ToString();
}
}
那么,如下:
public class Fum
{
public string FumName {get; set;}
public list<IFoo> Foos {get; set;}
}
我创建实例如下:
myFum = new Fum();
myFum.FumName = "myFum";
myFum.Foos.Add(new Foo<int>("intFoo", 2);
myFum.Foos.Add(new Foo<bool>("boolFoo", true);
myFum.Foos.Add(new Foo<string>("stringFoo", "I'm a string");
那么……
我正在尝试使用 NewtonSoft JSON 库进行如下序列化:
string strJson = JsonConvert.SerializeObject(data,
Formatting.Indented, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Include,
TypeNameHandling = TypeNameHandling.All,
TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
});
在生成的 JSON 字符串中,每个 Foo 实例的 Name 和 ValueType 属性 已正确序列化 - 但是,输出中始终省略值:
{
"FumName": "myFum",
"Foos" : [
{
"Name": "intFoo",
"ValueType": "System.Int32"
},
{
"Name": "boolFoo",
"ValueType": "System.Boolean"
},
{
"Name": "stringFoo",
"ValueType": "System.String"
}
]
}
任何人都可以提出一种可以让我正确序列化的方法吗 泛型类型实例列表,以便包含 Value 属性?
【问题讨论】: