在Json的对象中生成数组的问题

时间:2017-08-21 08:07:44

标签: c# json

我正在尝试使用列表对象中的数据填充以下对象。

public class DocumentQueryObject
{
    public Document[] documents { get; set; }
}

public class Document
{
    public DocumentObj document { get; set; }
}
public class DocumentObj
{
    public string homecommunityid { get; set; }
    public string repositoryid { get; set; }
    public string documentuuid { get; set; }
    public string doctype { get; set; }
}

我需要这个能够构建以下JSON

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

所以我使用以下c#代码

DocumentQueryObject documents = new DocumentQueryObject()
                    {
                       documents = new[] {
                       new Document()
                          {
                             document = new []
                                {
                                   obj.Select(s => new DocumentObj()
                                      {
                                         doctype = s.doctype
                                      })
                                }
                            }
                       }
                    };

obj是

下面的DocumentQuery对象列表
public class DocumentQuery
{
        public string doctype { get; set; }
        public string homecommunityid { get; set; }
        public string repositoryid { get; set; }
        public string documentuuid { get; set; } 
}

所以我需要将这些多个DocumentQuery对象从列表中分配给DocumentQueryObject。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您的Document课程有 a DocumentObj的属性,但您正在尝试创建DocumentObj数组

你应该这样做:

DocumentQueryObject documents = new DocumentQueryObject()
{
    documents = new[] 
    {
        new Document()
        {
            document = new DocumentObj()
        }
    }   
};

虽然您尚未发布obj是什么以及您想要实现的目标。虽然上述内容可能会消除您的错误,但您可能需要为问题添加更多上下文以获得更全面的答案。

更新

如果您希望将文档作为集合,那么您可以按照@dbc在评论中的建议更改类:

public class Document
{
    public List<DocumentObj> document { get; set; }
}


DocumentQueryObject documents = new DocumentQueryObject()
{
    documents = new[] 
    {
        new Document()
        {
            document =
                obj.Select(s => new DocumentObj()
                {
                    doctype = s.doctype

                }).ToList()
        }
    }

};