我正在使用winforms中的一个API,该API返回一个我想反序列化的json数组,该数组要使用Newtonsoft的JsonConvert.DeserializeObject
进行列出,但是不知何故它并未反序列化。
Web Api结果
[{
'JobID': '5d7ff7c393c3511a9c165caa',
'Name': '3dsmax-Demo-v2019 [BATCH MASTER]',
'Date': '16.09.2019 23:59:45',
'Frames': '1',
'Status': 'Completed',
'Priorty': 1,
'Credit': '0,0327',
'Estimated': '0,0654',
'Progress': '100 % (1/1)',
'Cpu': '0'
} {
'JobID': '5d80150b8b9da7134c7f7972',
'Name': 'restoran [View01] (BATCH 1 of 13)',
'Date': '17.09.2019 02:02:56',
'Frames': '0',
'Status': 'Completed',
'Priorty': 1,
'Credit': '1,1622',
'Estimated': '2,3244',
'Progress': '100 % (1/1)',
'Cpu': '0'
}]
C#模型类
public class JobModel
{
public string JobID { get; set; }
public string Name { get; set; }
public string Date { get; set; }
public string Frames { get; set; }
public string Status { get; set; }
public string Priorty { get; set; }
public string Credit { get; set; }
public string Estimated { get; set; }
public string Progress { get; set; }
public string Cpu { get; set; }
}
我尝试使用以下方法来完成
string data = await responseMessage.Content.ReadAsAsync<string>();
var jobs = JsonConvert.DeserializeObject<List<JobModel>>(data);
答案 0 :(得分:0)
JSON属性名称和非数字值应位于“”(双引号)中,而不应位于“”(双引号)中。
使用另一个类包装JobModel的集合(这是一个好习惯,但是json也应该更改),例如:
class ResultModel
{
public ICollection<JobModel> Jobs { get; set; }
}
// JSON:
{
"Jobs": [
{
// class properties with values
},
{
// class properties with values
}]
}
和chang类型的反序列化方法:
JsonConvert.DeserializeObject<ResultModel>(data);
如果您无法更改JSON,请使用JArray:
JArray jJobs = JArray.Parse(json);
并将JObject的JProperty映射到您的类上。