我使用RestSharp进行Rest API调用。
public class GetValues
{
public string Values{ get; set; }
}
public class JsonObjects
{
public List<GetValues> Values{ get; set; }
}
RestRequest restRequest = new RestRequest("api/tempCatalog/temp1", Method.GET);
restRequest.AddHeader("Accept", "application/json");
restRequest.AddHeader("Content-Type", "application/json");
restRequest.AddHeader("Authorization", token);
IRestResponse restResponse = clientRest.Execute(restRequest );
string Content = restResponse.Content;
JsonObjects.Values= JsonConvert.DeserializeObject<JsonObjects>(Content).Values;
我有上面的代码,它可以工作。
但是当JSON Rest Response包含一个数组时,在反序列化时会引发异常。
[当休息响应是这样的时候,有时,
{ "Fields": [ "Value.temp", ] }
我收到此异常:
Newtonsoft.Json.JsonSerializationException:'错误转换值'
ArgumentException:无法转换或从System.String转换为Namespace.GetValues。
[当我说有时候我的意思是我在多个API中使用此反序列化时,在问题中这只是一个例子,
如果我没看错的话,将得到以下JSON字符串:
{
"Fields": [
"Value.temp",
]
}
您要反序列化的类必须与此结构匹配,但不幸的是,您的不匹配。
所以JsonObjects
必须看起来像这样:
public class JsonObjects
{
public List<string> Fields { get; set; }
}