【发布时间】:2020-05-21 15:13:43
【问题描述】:
我正在尝试使用 REST Sharp 通过 API 访问 COVID19 JSON 格式的数据,但是当我尝试按照下面的反序列化时出现错误。我是 Rest Sharp 的新手。不知道我错过了什么。
C# 代码 公共无效 getCOVIDData() {
var client = new RestClient("https://covid-19-data.p.rapidapi.com/country?format=json&name=France");
var request = new RestRequest(Method.GET);
request.AddHeader("x-rapidapi-host", "covid-19-data.p.rapidapi.com");
request.AddHeader("x-rapidapi-key", constants.apiKey);
IRestResponse<COVID_Data.RootObject> response = client.Execute<COVID_Data.RootObject>(request);
//the below line returns a JSON object without a problem
string covidData = JsonConvert.DeserializeObject(response.Content).ToString();
//this line returns NewtonSoft.JSON.JSON.SerializationException error (see screen shot)
COVID_Data.RootObject data = JsonConvert.DeserializeObject<COVID_Data.RootObject>(response.Content);
}
返回的对象是
[ { “国家”:“法国”, “代码”:“FR”, “确认”:181575, “恢复”:63354, “关键”:1794, “死亡”:28239, “纬度”:46.227638, “经度”:2.213749, "lastChange": "2020-05-20T14:53:01-04:00", “上次更新”:“2020-05-21T10:15:02-04:00” } ]
当我尝试创建 COVID_Data 类并反序列化为 RootObject 时,我收到以下异常错误。
JSON
COVID_Class 设置如下。
公共类 COVID_Data {
public class RootObject
{
[JsonProperty("country")]
public string country { get; set; }
[JsonProperty("code")]
public string code { get; set; }
[JsonProperty("confirmed")]
public int confirmed { get; set; }
[JsonProperty("recovered")]
public int recovered { get; set; }
[JsonProperty("critical")]
public int critical { get; set; }
[JsonProperty("deaths")]
public int deaths { get; set; }
[JsonProperty("latitude")]
public double latitude { get; set; }
[JsonProperty("longitude")]
public double longitude { get; set; }
[JsonProperty("lastChange")]
public string lastChange { get; set; }
[JsonProperty("lastUpdate")]
public string lastUpdate { get; set; }
}
}
【问题讨论】:
-
那个 JSON 的根是一个 array,而不是那个对象。
-
谢谢。代码中如何解决还是有点模糊。
标签: json api deserialization restsharp