Преобразовать объект в Json в ASP. net Core - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь преобразовать объект "Persona" в строку json. net Framework 4, и мне нужна помощь.

Я пробовал это (используя System.Text. Json )

public HttpResponseMessage Get(int id){
  HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
    Personas persona = context.tPersonas.FirstOrDefault(p => p.idPersona == id);
    if (persona != null){
      var jsonData = JsonSerializer.Serialize(persona);
      response.Content = new StringContent(jsonData);
      response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
      return response;
    }
  else
    return response = new HttpResponseMessage(HttpStatusCode.BadRequest);            
} 

И это (с использованием Newtonsoft. Json);

 public HttpResponseMessage Get(int id)
        {
            HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
            Personas persona = context.tPersonas.FirstOrDefault(p => p.idPersona == id);
            if (persona != null)
            {
                response.Content = new StringContent(JsonConvert.SerializeObject(persona));
                response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
                return response;
            }
            else
                return response = new HttpResponseMessage(HttpStatusCode.BadRequest);            
        }

При отладке «персона» имеет данные, а «Сериализация» показывает ноль.

Я пробовал также «Request.CreateResponse», но по какой-то странной причине он не распознается как действительный код.

Какой шаг я пропускаю?

1 Ответ

1 голос
/ 19 марта 2020

Если вы хотите использовать HttpResponseMessage для возврата информации в asp .core mvc, вам необходимо выполнить следующие шаги:

  • Установить пакет Microsoft.AspNetCore.Mvc.WebApiCompatShim для вашего проекта.
  • Добавьте services.AddMvc().AddWebApiConventions(); к ConfigureServices в файле starup.cs.

Вот код:

    public HttpResponseMessage Get(int id)
    {
        HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
        Personas persona = _context.tPersonas.FirstOrDefault(p => p.idPersona == id);
        if (persona != null)
        {
            response.Content = new StringContent(JsonConvert.SerializeObject(persona));
            response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
            return response;
        }
        else
        {
            response = new HttpResponseMessage(HttpStatusCode.BadRequest);
            response.Content = new StringContent("error message");
            return response;
        }

    } 

Вы также можете обратиться к this .

Вот процесс отладки от почтальона:

enter image description here

...