Skip to main content
 首页 » 编程设计

c#之JSON 响应自定义 .NET Core Web API

2024年01月26日35langtianya

我正在使用 .net core 2.2 制作 webapi。我是 .net 框架的新手 到目前为止,我一直在使用基于 javascript 的框架,如 nodejs expressjs。

在 nodejs 中自定义 JSON 响应很容易。你能解释一下如何使用 .NET Core 2.2 WebApi 自定义 JSON 响应吗?只需指出正确的方向即可。

举个例子,

C# 用户模型

public class User { 
    int id {get;set;} 
    string name {get;set;} 
    string username {get;set;} 
    string password {get;set;} 
} 

默认 API 获取响应。

public ActionResult<IEnumerable<User>> GetAll() 

JSON:

[ 
    { 
        "id":1, 
        "name": "John Doe", 
        "username": "john", 
        "password": "AH7B302Iapxf7EFzZVW0/kJDuf/I3pDPkQ42IxBTakA=" 
    }, 
    {    
        "id":2, 
        "name": "Jane Doe", 
        "username": "jane", 
        "password": "AH7B302Iapxf7EFzZVW0/kJDuf/I3pDPkQ42IxBTakA=" 
    } 
] 

我需要像这样自定义输出。

{ 
    "statuscode": 200, 
    "count"     : 2, 
    "data"      :  
 
    [ 
        { 
            "name": "John Doe", 
            "username": "john", 
        }, 
        { 
            "name": "Jane Doe", 
            "username": "jane", 
        } 
    ] 
} 

请您参考如下方法:

您可以使用匿名对象,如果您不想为每个结果类型定义一个单独的类,它会派上用场:

public ActionResult<object> GetAll() 
{ 
    var list = _userRepository.GetAll(); // <-- if this is not (yet) an Array or a List, then force single evaluation by adding .ToArray() or .ToList() 
    var model = new 
    { 
        statuscode = 200, 
        count = list.Count, // or .Length if list is an Array 
        data = list.Select(x => new { name = x.name, username = x.userName }) 
    }; 
    return Ok(model); 
}