C# Can';t反序列化具有子列表的对象

C# Can';t反序列化具有子列表的对象,c#,.net,json,javascriptserializer,json.net,C#,.net,Json,Javascriptserializer,Json.net,所以我有一个目标: public class JournalItem { public string Description { get; set; } public bool IsShared { get; set; } public bool IsDeleted { get; set; } public bool IsGroup { get; set; } public Guid Id { get; set; } public List<

所以我有一个目标:

public class JournalItem
{
    public string Description { get; set; }
    public bool IsShared { get; set; }
    public bool IsDeleted { get; set; }
    public bool IsGroup { get; set; }
    public Guid Id { get; set; }
    public List<JournalItem> ChildEntities { get; set; }
}
下面是我如何使用JavaScriptSerialiazer将其转换为实际对象:

var ser = new JavaScriptSerializer();
var journalStructure = ser.Deserialize<List<JournalItem>>(journalJson);
var ser=newJavaScriptSerializer();
var journalStructure=ser.Deserialize(journalJson);
(我也尝试过NewtonSoft,结果也一样)

这应该会给我一个包含3个项目的数组(确实如此)。第一个项目不应该有任何ChildEntity,但是第二个和第三个项目应该有另一个JournalItems列表作为它们的ChildEntity,但是它们也都是空的


如何让这些序列化程序将json数组反序列化为列表?我可以这样做吗?

如果您将
ChildEntities
更改为
ChildEntities
(您的json字符串包含此内容),那么它应该可以工作


Json.net和JavaScriptSerializer都可以工作。

如果您将
ChildEntities
更改为
ChildEntities
(您的Json字符串包含此项)


Json.net和JavaScriptSerializer都可以工作。

我在Json库和Java中遇到了同样的问题。答案通常是使用库来实现您自己的反序列化程序以相应地处理它。大多数库允许您为特殊情况添加自定义反序列化。我在Json库和Java中遇到了同样的问题。答案通常是使用库来实现您自己的反序列化程序以相应地处理它。大多数库允许您为特殊情况添加自定义反序列化。我把名字改成了ChildItems,这样我就不会再这么做了。我把名字改成了ChildItems,所以我不再这样做了。
var ser = new JavaScriptSerializer();
var journalStructure = ser.Deserialize<List<JournalItem>>(journalJson);