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);