从对象列表中填充对象

时间:2017-08-21 11:08:24

标签: c# json

我有以下需要填充的RootObject对象。

public class Document2
{
    public string homecommunityid { get; set; }
    public string repositoryid { get; set; }
    public string documentuuid { get; set; }
    public string doctype { get; set; }
}
public class Document
{
    public Document2 document { get; set; }
}    
public class RootObject
{
    public List<Document> documents { get; set; }
}

我需要从以下DocumentQuery对象的列表中填充RootObject对象。

public class DocumentQuery
{
        public string doctype { get; set; }
        public string homecommunityid { get; set; }
        public string repositoryid { get; set; }
        public string documentuuid { get; set; } 
}

我正在尝试做以下事情:

RootObject doc = new RootObject()
   {
      Document= obj.Select(s => new Document()
      {
          document = new Document2()
             {
                 doctype = s.doctype
              }
       })
    };

我需要能够以这种格式使用JSON:

    {
  "documents": [
    {
      "document": {
        "homecommunityid": "",
        "repositoryid": "",
        "documentuuid": "",
        "doctype": ""
      }
    }
  ]
}

2 个答案:

答案 0 :(得分:1)

如果您不想使用Reflection等,可以使用以下代码:

List<DocumentQuery> queries = new List<DocumentQuery>();
// Fill queries
RootObject root = new RootObject();
foreach(var query in queries)
{
    Document document = new Document()
    {
        document = new Document2()
        {
            homecommunityid = query.homecommunityid,
            repositoryid = query.repositoryid,
            documentuuid = query.documentuuid,
            doctype = query.doctype
        }
    }
    root.documents.Add(document);
}

答案 1 :(得分:0)

您可以使用AutoMapper解决此问题。

AutoMapper是一个简单的小型库,用于解决一个看似复杂的问题 - 摆脱将一个对象映射到另一个对象的代码。