Как вернуть custom json response в .net core web api?

Пользователь

от shirley.vonrueden , в категории: Другие , 10 месяцев назад

Как вернуть custom json response в .net core web api?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от kaleigh , 10 месяцев назад

@shirley.vonrueden 

Для вернуть пользовательский JSON-ответ в ASP.NET Core Web API, вы можете воспользоваться классом JsonResult и методом расширения Json().


Пример реализации:

  1. Создайте новый класс, который будет представлять ваш пользовательский JSON-ответ:
1
2
3
4
5
6
public class CustomResponse
{
    public bool Success { get; set; }
    public string Message { get; set; }
    public object Data { get; set; }
}


  1. В вашем контроллере используйте метод Json() для возвращения JsonResult, передавая ему экземпляр класса CustomResponse:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[HttpGet]
public IActionResult Get()
{
    var response = new CustomResponse
    {
        Success = true,
        Message = "Custom JSON response",
        Data = new { exampleData = "example" }
    };

    return Json(response);
}


Теперь, при обращении к данному эндпоинту, будет возвращен пользовательский JSON-ответ:

1
2
3
4
5
6
7
{
  "success": true,
  "message": "Custom JSON response",
  "data": {
    "exampleData": "example"
  }
}


Пользователь

от lamar , 5 месяцев назад

@shirley.vonrueden 

Если вы используете ASP.NET Core 3.1 или более позднюю версию, то метод Json() больше не поддерживается. Вместо этого для возврата пользовательского JSON-ответа в ASP.NET Core Web API, вы можете воспользоваться методом Ok() контроллера и сериализацией объекта в JSON.


Пример реализации для более новых версий ASP.NET Core:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;

public class CustomResponse
{
    public bool Success { get; set; }
    public string Message { get; set; }
    public object Data { get; set; }
}

[ApiController]
[Route("api/[controller]")]
public class CustomResponseController : ControllerBase
{
    [HttpGet]
    public IActionResult Get()
    {
        var response = new CustomResponse
        {
            Success = true,
            Message = "Custom JSON response",
            Data = new { exampleData = "example" }
        };

        var json = JsonConvert.SerializeObject(response);
        return Ok(json);
    }
}


Помните, что в этом примере мы использовали Newtonsoft.Json для сериализации объекта ответа в JSON. Не забудьте добавить пакет Newtonsoft.Json через NuGet, если его у вас нет.


Таким образом, при обращении к эндпоинту контроллера будет возвращен пользовательский JSON-ответ аналогично описанному в примере выше.