Web API控制器即使返回的var不为空也返回空的JSON

时间:2018-06-22 12:54:24

标签: json asp.net-web-api controller

在我的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个元素的列表,不会造成任何问题。

0 个答案:

没有答案