Добавьте JSON-заголовок Content-Type в .NET Core - PullRequest
0 голосов
/ 22 мая 2018

Я использую это return Ok(JsonConvert.SerializeObject(res)); для возврата JSON в моем коде, и это прекрасно работает, но тип содержимого text/plain

, когда я использую [Produces("application/json")] в моем ответе API, будет выглядеть так:

{\"Value\":\"value1\"}

мне нужно использовать json serialize, но мне также нужен тип контента application/json.

, пожалуйста, помогите

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Когда вы вручную сериализуете ответ на json, платформа на самом деле думает, что вы отправляете строку в качестве ответа, и поэтому добавит заголовок типа контента text/plain к ответу.Поэтому не выполняйте сериализацию объекта ответа вручную.

Самый простой способ отправить объекты в формате json - просто доверять стандартному OutputFormatter, для которого задано значение JsonOutputFormatter .Он будет сериализовать все исходящие ответы объекта на json, если в контроллере / методе / действии не определен другой тип содержимого.

public IActionResult Get()
{
    ...your logic
    return Ok(res);
}
0 голосов
/ 22 мая 2018

Если вы сериализуете строку, лучше всего использовать (как указал Маркус)

return Ok(model)

Тип возврата при использовании метода Ok, хотя зависит от того, кто настроил ваше приложение ASP.NET Core и какиеУстановщики форматирования установлены (по умолчанию только Json Formatter, но вы также можете установить форматтер Xml) и какой тип предпочитает браузер.Если браузер запрашивает xml и у вас установлен форматер xml, он вернет xml.Если браузер запрашивает json и json formatter установлен, он вернет json.В противном случае вернитесь к любым лучшим костюмам.

Если ваши данные уже сериализованы в виде строки (потому что они поступают из БД, файловой системы и т. Д.), Используйте

return Content(jsonData, "application/json");

Если ваши данные - файл, просто используйте

return PhysicalFile("my.json", "application/json");

Если это поток

return File(fileStream, "application/json");

и т. Д.

0 голосов
/ 22 мая 2018

Чтобы вернуть Json с правильным типом содержимого, верните JsonResult из вашего метода, а затем верните JsonResult, например:

// GET: api/authors
[HttpGet]
public JsonResult Get()
{
    return Json(_authorRepository.List());
}

Для получения дополнительной информации см. Эту статью: Форматирование данных ответав ASP.NET Core Web API

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...