C# JSON.Net序列化派生列表<;T>;对于T使用非基元类型
当我为类C# JSON.Net序列化派生列表<;T>;对于T使用非基元类型,c#,json.net,C#,Json.net,当我为类XList使用序列化程序时,元素不会序列化。 如果我序列化一个列表或者甚至是从列表派生的类,它就可以正常工作 序列化程序仅生成$type、容量和计数属性 下面是我正在使用的序列化程序设置 JsonSerializerSettings { NullValueHandling = NullValueHandling.Include, Converters = new List<JsonConverter> { new IsoDateTime
XList
使用序列化程序时,元素不会序列化。
如果我序列化一个列表
或者甚至是从列表
派生的类,它就可以正常工作
序列化程序仅生成$type
、容量
和计数
属性
下面是我正在使用的序列化程序设置
JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Include,
Converters = new List<JsonConverter>
{
new IsoDateTimeConverter(),
new StringEnumConverter()
},
TypeNameHandling = TypeNameHandling.All
};
json序列化设置
{
NullValueHandling=NullValueHandling。包括,
转换器=新列表
{
新的IsoDateTimeConverter(),
新的StringEnumConverter()
},
TypeNameHandling=TypeNameHandling.All
};
您可能不同意数据合同或标记数据成员
您的泛型类需要如下所示
[DataContract]
internal class Person
{
[DataMember]
internal string name;
[DataMember]
internal int age;
}
注意类上方的[DataContract]
属性和每个成员上方的[DataMember]
属性
这些属性告诉序列化程序此对象是可序列化的,以及允许序列化的内容
您可以在上看到更多信息。出于某种原因,通用尖括号被保留在输出端。请正确设置代码格式!如果没有看到您的
XList
和RealPOCO
类,这是不可能回答的。哇,感谢您的快速回复。我的定义来源于poco的通用列表。字符串的派生泛型列表工作正常,而poco的简单泛型列表工作正常。派生的泛型列表不存在。@user3730943如果这回答了您的问题,请确保向上投票并选中它,以便人们将来知道。@user3730943将来在堆栈溢出问题上提问时,您需要发布所有代码。碰巧我在序列化方面做了很多工作,这是一个非常常见的问题。下次你就不会这么幸运了,我想这已经很接近了。因为它也是一个数据契约,所以我必须使用MemberSerialization.Fields而不是MemberSerialization.OptOut。谢谢。好的,请务必把这个标记为答案