在我的API中,我必须返回一个由2个不同的对象组成的json,一个是唯一的实体,另一个是列表。当我分别返回每个对象时没有问题,但是当我尝试将它们作为单个json返回时,即使我的ok(var)中的var包含了应该返回的内容,结果还是为空。
控制器如下所示:
[System.Web.Mvc.HttpGet]
public IHttpActionResult GetOne(int id)
{
var x = Service.GetOne(id);
return Ok(x)
}
(如果我在返回行上放置一个断点,则可以看到x包含单个对象和我想要的json列表)
“服务”是通过计算将单个对象和列表作为输入的模型构造函数来合并2个对象的地方,它看起来像这样:
public class mergedObject
{
IEnumerable<SingleObject> y;
IEnumerable<ListObject> z;
public mergedObject GetOne(int Id)
{
mergedObject x = new mergedObject(RepoSingleObject.getOne(Id) a,
RepoList.GetAll(Id) b)
this.y = a
this.z = b
}
它为每个对象调用相应的存储库(其中包含sql查询),并且我知道这部分正在工作,因为正如我之前所说,我可以适当地单独返回每个对象。
控制台绝对不会返回错误,除了合并以及使用断点时,我所做的所有操作都与单个对象相同,但似乎可以正常使用,但是使用邮递员进行测试时,我总是得到空收益。有人有解释吗?
编辑
该控制器派生自ApiController +在此添加了mergedObject类的完整定义。我什至在单个对象上也使用IEnumerable,因为我重用了代码的某些部分,而这个单个元素实际上是一个列表,所以我认为它只会是1个元素的列表,不会造成任何问题。