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。谢谢。好的,请务必把这个标记为答案