RestSharp中的json反序列化类为JsonDeserializer,其用法与JSON.NET有点不同。
(1) 在反序列化前要设置RootElement,否则无法反序列化成功。
(2) 反序列化后的对象属性如果有数组成员变量,必须用List<string>,而不能用string[],否则会提示没有定义无参数的构造函数。
以下例子用于反序列化一个json字符串。
JSON字符串为:{"error":{"code":400,"message":"Unable to complete operation.","details":["Invalid URL"]}}
.NET代码如下:
Public class JsonDemo
{
public void Test()
{
var myresponse = new RestResponse();
myresponse.Content = "{\"error\":{\"code\":400,\"message\":\"Unable to complete operation.\",\"details\":[\"Invalid URL\"]}}";
JsonDeserializer myJsonDeserializer = new JsonDeserializer();
myJsonDeserializer.RootElement = "error";
List<errorObject> myErrors = myJsonDeserializer.Deserialize<List<errorObject>>(myresponse);
}
}
public class errorObject
{
private int _code;
public int code
{
get { return _code; }
set { _code = value; }
}
private string _message;
public string message
{
get { return _message; }
set { _message = value; }
}
private List<string> _details;
public List<string> details
{
get { return _details; }
set { _details = value; }
}
public errorObject()
{ }
}