C# 如何将json文件中的数组与c控制器代码匹配?

C# 如何将json文件中的数组与c控制器代码匹配?,c#,.net,json,mongodb,C#,.net,Json,Mongodb,我试图用与json文件相同的结构匹配我的模型代码。json文件具有jsonArray,如果数组项中不存在accountlist另一个数组,它可以作为ReportList正常工作 现在,我正试图使它与帐户列表的工作。因此,我创建了MyListType,它与json文件中accountlist的结构相匹配 不幸的是,我得到一个错误,说json文件中的accountlist与Report类的任何字段或属性都不匹配。我认为应该和MyListType匹配 请帮我解决这个错误。提前谢谢 模型代码 publi

我试图用与json文件相同的结构匹配我的模型代码。json文件具有jsonArray,如果数组项中不存在accountlist另一个数组,它可以作为ReportList正常工作

现在,我正试图使它与帐户列表的工作。因此,我创建了MyListType,它与json文件中accountlist的结构相匹配

不幸的是,我得到一个错误,说json文件中的accountlist与Report类的任何字段或属性都不匹配。我认为应该和MyListType匹配 请帮我解决这个错误。提前谢谢

模型代码

public class Report
{
 public Object _id { get; set; }
 public string username { get; set; }
 public List<MyListType> accountlist{get; set;}
}
public class MyListType
{
 public string address1 {get; set;}
 public string address2 {get; set;}
}

您可能需要在类映射中注册这些类型

  if (!BsonClassMap.IsClassMapRegistered(typeof(Report))) BsonClassMap.RegisterClassMap<Report>(cm => { cm.AutoMap(); cm.SetIgnoreExtraElements(true); });

  if (!BsonClassMap.IsClassMapRegistered(typeof(MyListType))) BsonClassMap.RegisterClassMap<MyListType>(cm => { cm.AutoMap(); cm.SetIgnoreExtraElements(true); });

  var reports = _collection.FindAllAs<Report>().ToList();

在进一步查看我的代码后,我发现问题在于我对字段accountslist和collection accountlist使用了不同的名称。类中表示集合的字段名需要精确匹配。

因此,经过大量挖掘,我确实从这篇文章中发现了类似的问题,我了解到我需要在代码的foreach循环中将FindAll更改为FindAllAs。但是我仍然得到了错误。我知道我越来越接近了。把芬德尔换成芬达拉斯并没有什么不同。
{
   "username" : "doodle",
   "accountlist" : [
                      {"address1": "abc st", "address2": "efg st"},
                      {"address1": "hijk st", "address2": "mno st"}
                   ]
  }

  {
   "username" : "doodle2",
   "accountlist" : [
                      {"address1": "abc st", "address2": "efg st"},
                      {"address1": "hijk st", "address2": "mno st"}
                   ]
  }
  if (!BsonClassMap.IsClassMapRegistered(typeof(Report))) BsonClassMap.RegisterClassMap<Report>(cm => { cm.AutoMap(); cm.SetIgnoreExtraElements(true); });

  if (!BsonClassMap.IsClassMapRegistered(typeof(MyListType))) BsonClassMap.RegisterClassMap<MyListType>(cm => { cm.AutoMap(); cm.SetIgnoreExtraElements(true); });

  var reports = _collection.FindAllAs<Report>().ToList();