RestSharp反序列化JSON内容(表示对象包含一个字节数组)错误(RestSharp dese

2019-07-29 17:50发布

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

Answer 1:

JsonDeserializer从RestSharp无法反序列化阵列。 代替的byte[]使用List<byte> 。 欲了解更多信息,请参阅https://github.com/restsharp/RestSharp/wiki/Deserialization



Answer 2:

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

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

keyResponse现在应该是从JSON反序列化内容的键类的一个实例。



Answer 3:

除了克里斯·霍根的答复,我想指出的是,我得到这个错误时RestSharp不当使用默认的序列,而不是我指派了自定义的串行JSON.NET。

这样做的原因是,我添加了内容类型处理器application/json而API我正在从返回的内容作为响应text/json

因此,通过改变AddHandler调用AddHandler("text/json", jsonDeserializer)我解决了这个问题。



文章来源: RestSharp deserialize JSON content(represent an object contains an byte array) error