Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将隐藏基类成员的类序列化为JSON_C#_Inheritance_Json Serialization - Fatal编程技术网

C# 将隐藏基类成员的类序列化为JSON

C# 将隐藏基类成员的类序列化为JSON,c#,inheritance,json-serialization,C#,Inheritance,Json Serialization,有两类: class Document { public DocumentItem[] DocumentItemList { get; set; } } class DocumentViewModel : Document{ public new DocumentItemViewModel[] DocumentItemList { get; set; } } 派生类中的DocumentItemList隐藏基类中的DocumentItemList 当DocumentViewMo

有两类:

class Document {
    public DocumentItem[] DocumentItemList { get; set; }
}

class DocumentViewModel : Document{
    public new DocumentItemViewModel[] DocumentItemList { get; set; }
}
派生类中的
DocumentItemList
隐藏基类中的
DocumentItemList

DocumentViewModel
对象序列化为JSON时:

DocumentViewModel instance = CreateObject(); // object gets created
string serializedContent = new JavaScriptSerializer().Serialize(instance);
序列化字符串中有两个DocumentItemList:

{
    "DocumentItemList": [{
            ... etc. ...
    }],
    "DocumentItemList": null
}
为什么会这样?当数据被反序列化时,这会导致错误。


(BTW,我用NethOntFut.JSON测试序列化,并且序列化器没有这个错误).< /P> < P>如果您想坚持<代码> JavaScript PrimeSerials/COD>,您可以考虑使用<代码> [jsNeReun] < /Cord>属性,在要忽略的属性上,这是关于线程中的阴影属性的讨论。

给你:

class Document {
    public DocumentItem[] DocumentItemList { get; set; }
}

class DocumentViewModel : Document{
    [JsonIgnore]
    public new DocumentItemViewModel[] DocumentItemList { get; set; }
}

甚至微软也在几个项目/库中使用Json.NET。忘记JavaScriptSerializer,使用Json。NET@meJustAndrew,你说得对,更正。