Newtonsoft JSONシリアライザを使用しています。クラスがリストから派生している場合は、シリアル化された文字列に派生クラスのプロパティがありません。ここに私のコード例があります。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;
}
シリアライズコード:
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);
シリアライゼーション後、試験の値は:
[{\ "itemInt \":1、\」 itemString \ ":\" First \ "}]
mainIntとmainStringの値が完全に欠落しています。
[DataContract]タグと[DataMember]タグで動作は変更されませんが、そこにはそれらがあり、欠落しているという回答を先取りしています。
派生クラスのmainIntプロパティとmainStringプロパティをJSONで認識してシリアル化するにはどうすればよいですか?
良いアイデアが、それでも動作しません。 TestMainをJsonObjectとしてタグ付けすると、mainIntとmainStringが渡されますが、リスト項目は表示されません。 – user1961169
TestMainのプロパティとしてリストを用意することは解決策です(JSONはそれでうまくいきます)。残念ながら、私たちが制御できない他のコードに影響を与えます - これらのクラスをそのまま使用する第三者コードがありますリスト<> – user1961169