反序列化json问题-继承的linq2SQL对象

本文关键字:linq2SQL 对象 继承 json 问题 反序列化 | 更新日期: 2023-09-27 18:29:01

我在web应用程序中使用了Linq来SQL对象。我的基类和继承类如下:

//Base Class: this will define the attributes that is auto-generated
//when using Linq-2-SQL ORM. Note this class is a partial class
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Categories")]
[global::System.Runtime.Serialization.DataContractAttribute()]
public partial class Category : INotifyPropertyChanging, INotifyPropertyChanged 

//Inherited Class:
[Serializable]
public class CategoryEntity : Category
{
    private int _ActiveAdsCount;
    public int ActiveAdsCount
    {
        get
        {
            return _ActiveAdsCount;
        }
        set
        {
            _ActiveAdsCount = value;
        }
    }
    public int DisplaySequence { get; set; }
}

序列化时,Json OUTPUT为(注意ActiveAdsCount和DisplaySequence值):

[{"ActiveAdsCount":3429,"DisplaySequence":99,"类别ID":636,"ParentCategoryID":635,"类别名称":"propForRent","类别图像FN":null}]

当我调用deserialze对象方法时

result = JsonConvert.DeserializeObject<T>(responseText);

其中T为列表结果:它显示"ActiveAdsCount"answers"DisplaySequence"的值为0,而json显示来自数据库的正确信息。因此,问题在于反序列化。

我使用的是.Net 4.0框架的Newtonsoft.Json.dll的4.5.1版本

反序列化json问题-继承的linq2SQL对象

此外,我已将具有DataContract属性的CategoryEntity类及其成员标记为Datamember,以进行序列化。我注意到Serialization属性只使实例可序列化,而不使其成员可序列化。所以,新的类看起来是这样的:

[DataContract]
public class CategoryEntity : Category
{
    [DataMember]
    public int ActiveAdsCount { get; set; }
    [DataMember]
    public int DisplaySequence { get; set; }
    [DataMember]
    public IList<CategoryEntity> SubCategories { get; set; }
    [DataMember]
    public IList<BasicCategoryInfo> SubCategoriesBasicInfoList { get; set; }
    [DataMember]
    public string ParentCategoryNameEn { get; set; }
    [DataMember]
    public int CityID { get; set; }
}

@JasonJong非常感谢您的评论。