Ответ 1
JsonDeserializer от RestSharp не может десериализовать массив. Вместо byte[]
используйте List<byte>
. Для получения дополнительной информации см. https://github.com/restsharp/RestSharp/wiki/Deserialization
Клиентская сторона получает формальный контент JSON "{\"Id\":[1,2,3],\"Size\":56}"
, но получает ошибку при десериализации массива байтов.
1 В приведенном ниже описании происходит ошибка
IRestResponse<key> response = client.Execute<key>(request);
2 Сообщение об ошибке: "Нет конструктора без параметров, определенного для этого объекта".
3 Класс объекта в размере клиента такой же, как на стороне сервера:
public class key
{
public byte[] id { get; set; }
public int Size { set; get; }
}
4 Я пробовал передать объект, который содержит строку и целое по формату JSON, и что все мелкие, но байтовые массивы.
JsonDeserializer от RestSharp не может десериализовать массив. Вместо byte[]
используйте List<byte>
. Для получения дополнительной информации см. https://github.com/restsharp/RestSharp/wiki/Deserialization
Я тоже столкнулся с этой проблемой. Моим решением было использовать RestSharp для выполнения необработанного выполнения и использовать Json.NET для десериализации результата:
var response = client.Execute(request);
var keyResponse = JsonConvert.DeserializeObject<key>(response.Content);
keyResponse теперь должен быть экземпляром вашего класса ключей, десериализованным из содержимого JSON.
В дополнение к ответу Криса Хогана, я хотел бы указать, что я получил эту ошибку, когда RestSharp неправильно использовал сериализатор по умолчанию вместо настраиваемого сериализатора JSON.NET, который я назначил.
Причиной этого было то, что я добавил обработчик с типом контента application/json
, тогда как API, с которого я получал ответ, возвращал содержимое как text/json
.
Итак, изменив вызов AddHandler
на AddHandler("text/json", jsonDeserializer)
, я решил проблему.