客户端收到正式的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格式传递包含字符串和整数的对象,这一切都很好但是字节数组。
答案 0 :(得分:41)
RestSharp中的JsonDeserializer无法反序列化数组。而不是byte[]
使用List<byte>
。有关详细信息,请参阅https://github.com/restsharp/RestSharp/wiki/Deserialization
答案 1 :(得分:25)
我也遇到过这个问题。我的解决方案是使用RestSharp执行原始执行并使用Json.NET反序列化结果:
var response = client.Execute(request);
var keyResponse = JsonConvert.DeserializeObject<key>(response.Content);
keyResponse现在应该是从JSON内容反序列化的密钥类的实例。
答案 2 :(得分:0)
除了Chris Hogan的回复之外,我还想指出,当RestSharp错误地使用默认序列化程序而不是我指定的自定义JSON.NET序列化程序时,我收到此错误。
原因是我添加了内容类型为application/json
的处理程序,而我收到响应的API将内容返回为text/json
。
因此,通过将AddHandler
调用更改为AddHandler("text/json", jsonDeserializer)
,我解决了问题。