JSON序列化缺少派生类中的属性

use*_*169 7 c# json

我正在使用Newtonsoft JSON序列化程序,如果类是从列表派生的,则序列化字符串缺少派生类的属性.这是我的示例代码.

类别:

[DataContract]
public class TestItem
{
    [DataMember]
    public int itemInt;
    [DataMember]
    public string itemString;

    public TestItem() {}
    public TestItem(int _intVal, string _stringVal)
    {
        itemInt = _intVal;
        itemString = _stringVal;
    }
}

[DataContract]
public class TestMain : List<TestItem>
{
    [DataMember]
    public int mainInt;
    [DataMember]
    public string mainString;
}
Run Code Online (Sandbox Code Playgroud)

序列化代码:

string test;

// Test classes
TestMain main = new TestMain();
main.mainInt = 123;
main.mainString = "Hello";
main.Add(new TestItem(1, "First"));

test = Newtonsoft.Json.JsonConvert.SerializeObject(main);
Run Code Online (Sandbox Code Playgroud)

序列化后,test的值为:

[{\ "itemInt \":1,\ "itemString \":\ "第一\"}]

mainInt和mainString的值完全缺失.

[DataContract]和[DataMember]标签不会改变行为,但我在那里有它们,以抢占它们缺少的答案.

如何让JSON识别和序列化派生类的mainInt和mainString属性?

小智 1

看一下将 json 属性添加到您的属性上。这是一个示例:Json.NET 序列化带有 root name 的对象。我唯一犹豫要做的就是从这样的列表中派生主要内容。这不是推荐的模式和做法。添加列表作为另一个子属性而不是从列表派生,json序列化对您的意图感到困惑。