Tôi đang sử dụng serializer Newtonsoft JSON, và chuỗi tuần tự hóa bị thiếu các thuộc tính từ lớp dẫn xuất nếu lớp được bắt nguồn từ một danh sách. Đây là mã ví dụ của tôi.JSON serialization thiếu thuộc tính trong lớp dẫn xuất
Lớp học:
[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;
}
đang Serializing:
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);
Sau serialization, giá trị của thử nghiệm là:
[{\ "itemInt \": 1, \" itemString \ ": \" Đầu tiên \ "}]
Các giá trị cho mainInt và mainString bị thiếu hoàn toàn.
Hành vi không bị thay đổi bởi thẻ [DataContract] và [DataMember], nhưng tôi có chúng ở đó, để đặt trước câu trả lời mà chúng bị thiếu.
Làm cách nào để nhận JSON nhận biết và tuần tự hóa các thuộc tính mainInt và mainString của lớp dẫn xuất?
Ý tưởng tốt, nhưng vẫn không hoạt động. Khi tôi gắn thẻ TestMain là một JsonObject, mainInt và mainString đi qua, nhưng các mục danh sách thì không! – user1961169
Có danh sách như một tài sản của TestMain sẽ là một giải pháp (JSON hoạt động tốt với điều đó), nhưng tiếc là điều đó sẽ ảnh hưởng đến mã khác mà chúng tôi không kiểm soát được - có mã bên thứ 3 sử dụng các lớp này, một Danh sách <>. – user1961169