структура постов различий в .net core 2.2 и 3.0 - PullRequest
3 голосов
/ 07 октября 2019

в моем проекте с .net core 2.2 я использую почтальон для тестирования API.
в почтальоне
(1) задаю тип контента: application / json
(2) body => raw & json andя отправляю простой объект JavaScript, такой как:

{
    pageSize : 10,
    pageNumber : 0,
    sortType : 'nn',
    keyword : 'ff',
    cityCode : 1,
    citySlug : 'f',
    priceRange : 'ff',
    starRange : 'fff',
    hotelFacilityRange : 'fffff',
    roomFacilityRange : 'fs',
    hotelGroup : 'dss',
    hotelType : 'sss',
    foodType : 'ss'
}

, но вчера я обновляюсь до .net core 3.0
, и теперь я должен отправить строку json, и не принимает простой объект.
чтонеправильно?
когда я отправляю простой объект, я получаю ноль в API, но когда я конвертирую в json "pageSize": 10, "pageNumber": 0 ... это работает !!!

1 Ответ

2 голосов
/ 07 октября 2019

но вчера я обновляюсь до .net core 3.0, и теперь я должен отправить строку json и не принимает простой объект.

Действительно. Я мог бы воспроизвести ту же проблему, что и ваша. Но я не думаю, что это ошибка, потому что ASP.NET Core 3.0 теперь использует System.Text.Json в качестве инструмента по умолчанию для сериализации / десериализации json. См. официальные документы .

Однако, согласно json.org , строка должна начинаться с " вместо '. :

JSON string
(источник: json.org )

Короче, То, что вы делали в старые времена, не является стандартным представлением JSON . Причина, по которой вы можете это сделать, заключается в том, что JSON.NET делает это за вас автоматически.


Чтобы включить старое поведение, вы можете следовать советам Microsoft здесь :

  1. Добавить ссылку на пакет в JSON.NET
  2. Добавить .AddNewtonsoftJson() для MVC:
 public void ConfigureServices(IServiceCollection services)
 {
     services.AddControllersWithViews().AddNewtonsoftJson();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...