Как вернуть таблицу SQL как JSON в C #. NET WEB API - PullRequest
1 голос
/ 24 октября 2019

Ниже приведен код, из которого я хочу вернуть JSON таблицы EmployeeDetails.

[HttpGet]
            [Route("AllEmployeeDetailsInJSON")]
            public IQueryable<EmployeeDetail> GetEmployeeInJSON()
            {
                try
                {
                    return objEntity.EmployeeDetails;
                }
                catch (Exception)
                {
                    throw;
                }
            }

Ответы [ 2 ]

2 голосов
/ 24 октября 2019
public ActionResult Index()
{
     dbcontext db = new dbcontext();
     return View(db.EmployeeDetails.ToList());
}

Чтобы получить JSON

public System.Web.Mvc.JsonResult GetEmployeeInJSON()
{
     dbcontext db = new dbcontext();
     var data = db.EmployeeDetails.ToList();
     return Json(data, JsonRequestBehavior.AllowGet);
}

Если вы пытаетесь использовать его в webapi. используйте следующий код.

При вызове API установите Content-Type = "application / json"

[HttpGet]
[Route("AllEmployeeDetailsInJSON")]
public async Task<HttpResponseMessage> GetEmployeeInJSON()
{   
    try
    {
        dbcontext db = new dbcontext();
        var data = db.EmployeeDetails.ToList();
        return Request.CreateResponse(HttpStatusCode.OK, new
        {
            Data = data
        });
    }
    catch (Exception)
    {
        throw;
    }
}
1 голос
/ 24 октября 2019

Таким образом, у вас есть два варианта работы с Web API:

Первый: используйте JSON.NET и возвращайте строку

Вы можете использовать NewtonsoftПакет Nuget. Вы можете преобразовать каждый объект в строку JSON с помощью одной строки кода:

public string GetEmployees(){
        //Get Employees from Db:
        var employessFromDb = _context.Employees.ToList(); //Where Employees is your table name


        //Generate JSON string that we want to return
        string JSON = JsonConvert.SerializeObject(employessFromDb);

        //return the JSON
        return JSON;
}

Проблема с возвратом строки заключается в том, что ваш JSON будет заключен в кавычки и вы не будете отправлять HTTP-код.

Таким образом, я бы использовал второй подход:

Второй: используйте встроенное решение

public IHttpActionResult GetCustomers() 
    {
        var employeesFromDb = _context.Employees.ToList(); //Where Employees is your table name
        return Ok(employeesFromDb);
    }

Второй подход преобразует список сотрудников после того, как вы вернетесьтак что вам не нужно заботиться об этом

Независимо от того, какой путь вы выберете, вам понадобится (глобальная) переменная:

private ApplicationDbContext _context;

Так что, если вы объедините данный код имой ответ будет примерно таким:

    [HttpGet]
    [Route("AllEmployeeDetailsInJSON")]
    public IHttpActionResult GetEmployeeInJSON()
    {
        try
        {
            var employeesFromDb = _context.Employees.ToList(); //Where Employees is your table name
            return Ok(employeesFromDb);
        }
        catch (Exception)
        {
            throw;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...