【发布时间】:2019-12-19 14:00:07
【问题描述】:
我使用 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 包含一个数组时,它会在反序列化时抛出一个异常。
当 Rest Response 是这样的时候,有时,
{ "Fields": [ "Value.temp", ] }
我得到了这个例外:
Newtonsoft.Json.JsonSerializationException: '错误转换值'
ArgumentException:无法从 System.String 转换或转换为 Namespace.GetValues。
当我说有时我的意思是我在多个 API 调用中使用这个反序列化时,这个问题只是一个例子
这些是我作为 Rest 响应的一些 Json 数组,我想反序列化它们。
{
"Fields": [
"Temp1.Value",
"Temp2.Value",
"Temp3.Value",
"Temp4.Value"
]
}
还是这些??
{
"Errors":
[
{
"ErrorCode": "Temp Number",
"Message": "Temp Message",
"TempName": "Name"
}
],
"ValueErrors": []
}
还是这些??
{
"Total": 1,
"Categories": [
{
"Id": "tempID",
"Name": "tempName"
}
]
}
【问题讨论】:
-
我编辑了我的问题,你现在能帮我吗??
-
有人帮忙吗??
-
一个问题:这些响应是否来自完全相同的 url?它们具有非常不同的结构。我们可以将它们组合成一个响应,但这会增加代码的复杂性。
标签: c# json json.net restsharp json-deserialization