23

客户端接收到正式的 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 格式传递包含字符串和整数的对象,这一切都很好,但字节数组。

4

3 回答 3

55

RestSharp 中的 JsonDeserializer 无法反序列化数组。而不是byte[]使用List<byte>. 有关更多信息,请参阅https://github.com/restsharp/RestSharp/wiki/Deserialization

于 2013-12-17T14:38:17.430 回答
26

我也遇到过这个问题。我的解决方案是使用 RestSharp 执行原始执行并使用 Json.NET 反序列化结果:

var response = client.Execute(request);
var keyResponse = JsonConvert.DeserializeObject<key>(response.Content);

keyResponse 现在应该是从 JSON 内容反序列化的密钥类的实例。

于 2012-06-20T14:34:19.237 回答
0

除了 Chris Hogan 的回复之外,我想指出的是,当 RestSharp 错误地使用了默认序列化程序而不是我分配的自定义 JSON.NET 序列化程序时,我收到了这个错误。

这样做的原因是我添加了一个内容类型的处理程序,application/json而我从中获取响应的 API 将内容返回为text/json.

因此,通过将AddHandler呼叫更改为AddHandler("text/json", jsonDeserializer),我解决了这个问题。

于 2016-11-01T13:10:19.413 回答