从API返回的标签值

时间:2018-09-07 14:23:32

标签: c#

此方法返回arrbool-

string

在我的控制器中,我这样称呼它-

public (bool active, string name) Report() 
{
}

我得到的答复是这样的-

public IActionResult Credit([FromBody] Data data)
{
    return Ok(Report())
}

我该如何获得此回复-

{
    "item1": false,
    "item2": "Your name"
}

3 个答案:

答案 0 :(得分:7)

快速简便的方法是返回匿名类型,并从返回的元组中获取值

public IActionResult Credit([FromBody] Data data) 
{
    //...
    var report = Report();
    return Ok(new 
    {
        Active = report.active,
        Name = report.name
    })
}

理想情况下,您应该返回一个可以从API返回的强类型模型

public class ReportModel 
{
    public string Name { get;set; }
    public bool Active { get;set; }
}

并相应地更新

public ReportModel Report()  
{
    //...
}

public IActionResult Credit([FromBody] Data data) 
{
    //...
    var report = Report();
    return Ok(report);
}

答案 1 :(得分:1)

值元组(用于Report()方法的返回值)只是ValueTuple<T,T,...,T>对象周围的语法糖。因此,不动产名称不是activename,而是item1item2

因此您的方法将转换为如下形式:

[return: TupleElementNames(new string[] {
    "active",
    "name"
})]
public ValueTuple<bool, string> Report()

您如何解决此问题?您应该创建一个反映您想要返回的内容的模型:

public class ActiveName
{
    public string Name { get;set;}
    public bool Active {get;set;}
}

,然后更改您的方法以返回此ActiveName类型。

另一种方法是将匿名类型返回为动态类型,但我建议您不要使用这种方法,因为使用dynamic会导致发生错误时发生运行时错误。如果您只是使用它从API方法中返回,那么可能就可以了。

public dynamic Report()
{
    return new { name = "abc", active = true };
}

答案 2 :(得分:0)

SettingKeys