【发布时间】:2019-09-17 16:27:53
【问题描述】:
我正在使用 winforms 中的一个 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);
【问题讨论】:
-
有例外吗?请发布一些详细信息。
-
对象之间的 api 结果中似乎缺少逗号。我认为这不是因为我的清理造成的,是您的复制粘贴错误吗?
-
您的 JSON 格式错误。外部数组中的两个对象之间应该有一个
,:'Cpu': '0' }, { 'JobID': '5d80150b8b9da7134c7f7972',。演示:dotnetfiddle.net/dyzeko。固定:dotnetfiddle.net/umBeWC -
正是...您的 JSON 中有错误。下次,不要在 StackOverflow 上发布,只需将您的 JSON 剪切并粘贴到 jsonlint.com 中,这将告诉您您的 JSON 是否有效。如果它不是......那么......在你修复它之前你不会走得太远。
-
不,你可以让他们意识到这一点。我的意思是,您当然可以自己进行一些手动编辑,但这很容易出错。您可以删除开始
[和结束]并拆分} {,然后单独解析每个结果,但就像我说的那样,这很容易出错
标签: winforms c# json deserialization