发布
社区首页 >问答首页 >Web API如何返回多个类型

Web API如何返回多个类型
EN

Stack Overflow用户
提问于 2012-07-31 12:39:36
回答 3查看 28.6K关注 0票数 24

我只是想知道是否可以在一个Web Api中返回多个类型。例如,我希望api同时返回客户列表和订单列表(这两组数据可能相互关联,也可能不相关?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-31 13:24:38

要返回多个类型,可以将它们包装到匿名类型中,有两种可能的方法:

代码语言:javascript
代码运行次数:0
复制
public HttpResponseMessage Get()
{
    var listInt = new List<int>() { 1, 2 };
    var listString = new List<string>() { "a", "b" };

    return ControllerContext.Request
        .CreateResponse(HttpStatusCode.OK, new { listInt, listString });
}

或者:

代码语言:javascript
代码运行次数:0
复制
public object Get()
{
    var listInt = new List<int>() { 1, 2 };
    var listString = new List<string>() { "a", "b" };

    return  new { listInt, listString };
}

还要记住,XML序列化程序不支持匿名类型。因此,您必须确保请求应该具有报头:

代码语言:javascript
代码运行次数:0
复制
Accept: application/json

为了接受json格式

票数 39
EN

Stack Overflow用户

发布于 2012-07-31 12:50:20

您必须使用JsonNetFormatter序列化程序,因为默认的序列化程序- DataContractJsonSerializer不能序列化匿名类型。

代码语言:javascript
代码运行次数:0
复制
public HttpResponseMessage Get()
{
    List<Customer> cust = GetCustomers();
    List<Products> prod= GetCustomers();
    //create an anonymous type with 2 properties
    var returnObject = new { customers = cust, Products= prod };
    return new HttpResponseMessage<object>(returnObject , new[] { new JsonNetFormatter() });
}

您可以从HERE获得JsonNetFormatter

票数 0
EN

Stack Overflow用户

发布于 2020-04-16 04:16:36

而不是这样:

代码语言:javascript
代码运行次数:0
复制
return ControllerContext.Request
       .CreateResponse(HttpStatusCode.OK, new { listInt, listString });

使用以下命令:

代码语言:javascript
代码运行次数:0
复制
return Ok(new {new List<int>() { 1, 2 }, new List<string>() { "a", "b" }});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11733205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档