Я создаю. Net Веб-API Core 3.1. Для отправки запросов к веб-API. Я использую библиотеку System. Net .Http. Я помещаю JSON в тело запроса POST. Это боковой обработчик веб-API:
using Microsoft.AspNetCore.Mvc;
[ApiController]
public class MyController : ControllerBase
{
[HttpPost]
public int HandleRequest([FromBody] string jsonString)
{
return 1;
}
}
Приведенный ниже код отправляет пустой список ArrayList в веб-API, но всегда возвращает «Непредвиденный символ, обнаруженный при анализе строки значения 1, позиция 1.».
var serializedData = new JavaScriptSerializer().Serialize(new ArrayList());
var content = new StringContent(serializedData, Encoding.UTF8, "application/json");
var response = client.PostAsync(url, content);
return response.Result.Content.ReadAsStringAsync();
Я попытался использовать JsonConvert и поигрался с объектом для сериализации, но он всегда возвращает ту же ошибку. Но потом я обнаружил, что если я сделаю сериализацию дважды, она начнет работать. Итак, приведенный ниже код работает - отправляет запрос без ошибок и данные на стороне веб-API верны.
var serializer = new JavaScriptSerializer();
var serializedData = serializer.Serialize(serializer.Serialize(new ArrayList()));
var content = new StringContent(serializedData, Encoding.UTF8, "application/json");
var response = client.PostAsync(url, content);
return response.Result.Content.ReadAsStringAsync();
Почему мне нужно выполнять двойную сериализацию, чтобы он работал?