Я использую RestSharp 106.11.7.
Пытаюсь создать задачу на ADO. Я использую RestSharp следующим образом:
var body = new AdoRequestBody
{
op = "add",
path = "/fields/System.Title",
from = null,
value = "Sample task"
};
var request = new RestRequest("aStringPointingtoApi", Method.POST);
request.AddJsonBody(body);
При этом тело сериализуется в:
{
"op": "add",
"path": "/fields/System.Title",
"from": null,
"value": "Sample task"
}
Согласно ADO API это правильное тело:
[
{
"op": "add",
"path": "/fields/System.Title",
"from": null,
"value": "Sample task"
}
]
Я попробовал тело с скобками массива/списка в Postman, и оно работает. Если я удалю скобки массива/списка, это не сработает.
Это сообщение об ошибке, которое я получаю:
You must pass a valid patch document in the body of the request.
Кажется, кто-то нашел решение с помощью Newtonsoft.Json.JsonConvert, которое я не хочу использовать. https://github.com/restsharp/RestSharp/issues/1413#issuecomment-578302527
Итак, как мне заставить RestSharp сериализовать мой объект внутри скобок массива?





API ожидает массив объектов AdoRequestBody, а вы сериализуете один объект. Как указано в комментариях, создайте массив с вашим единственным объектом, а затем сериализуйте его для запроса:
var body =
new AdoRequestBody[]
{
new AdoRequestBody
{
op = "add",
path = "/fields/System.Title",
from = null,
value = "Sample task"
}
};
var request =
new RestRequest(
"aStringPointingtoApi",
Method.POST);
request.AddJsonBody(body);