JSon для WebAPI становится [[]],[[]],[[]],[[]]

#asp.net-web-api

#asp.net-web-api

Вопрос:

с моим WebAPI происходит что-то странное, в чем я, кажется, пока не могу разобраться. Я использую SoapUI для публикации этой полезной нагрузки:

 {
'Id': '00000000-0000-0000-1821-000000000000',
'Operation': 'post',
'Severity': 1,
'LoginName': 'nickj@noemail.email',
'EventText': 'testing post method'
}
  

Мой WebAPI — это просто:

     public HttpResponseMessage PostTrackingInformation(HttpRequestMessage req)
    {
        var content = req.Content;
        string jsonContent = content.ReadAsStringAsync().Resu<
    }
  

Однако, когда я смотрю на содержимое строки, я в конечном итоге получаю содержимое, которое выглядит следующим образом:

 [[[]],[[]],[[]],[[]],[[]]]
  

Я отправляю application / json в качестве типа содержимого

Кто-нибудь видел это раньше? Чего я не понимаю? Спасибо, Ник

Комментарии:

1. Есть ли причина, по которой вы включаете HttpRequestMessage в качестве параметра? К нему можно получить доступ в методе контроллера с помощью this.Request . Обычно вы бы использовали, public HttpResponseMessage PostTrackingInformation(TrackingInfo info) где TrackingInfo — это класс, который представлен вашим JSON — без необходимости самостоятельно считывать полезную нагрузку из запроса.

2. Я делал это таким образом. С именем класса в нем. Но я также сталкивался с проблемами, когда класс не отображал способ, который мне был нужен в JSON. Поэтому я делаю это явно сейчас, а не неявно.

Ответ №1:

Оказывается, это проблема не с самим API, а с версией Restsharp 106.69 и Newtonsoft.

В итоге я добавил этот пакет:

используя RestSharp.Serializers.Newtonsoft.Json;

и затем мои строки запроса Restsharp, подобные этой:

var request = новый RestSharp.RestRequest {Метод = Метод.POST, RequestFormat = DataFormat.Json, JsonSerializer = new NewtonsoftJsonSerializer()};

Также похоже, что следующая основная версия RestSharp (107) снова будет поддерживать Newtonsoft.