C# · 12月 26, 2021

c# – RestSharp JSON数组反序列化

我以 JSON格式启动这个RestSharp查询: var response = restClient.Execute<Report>(request);

我得到的响应包含这些数据

[ { “Columns”: [ {“Name”:”CameraGuid”,”Type”:”Guid”},{“Name”:”ArchiveSourceGuid”,{“Name”:”StartTime”,”Type”:”DateTime”},{“Name”:”EndTime”,{“Name”:”TimeZone”,”Type”:”String”},{“Name”:”Capabilities”,”Type”:”UInt32″} ],”Rows”: [ [ “00000001-0000-babe-0000-00408c71be50″,”3782fe37-6748-4d36-b258-49ed6a79cd6d”,”2013-11-27T17:52:00Z”,”2013-11-27T18:20:55.063Z”,”Eastern Standard Time”,2147483647 ] ] }]

我试图将它反序列化成这组课程:

public class Report{ public List<ReportResult> Results { get; set; }}public class ReportResult{ public List<ColumnField> Columns { get; set; } public List<RowResult> Rows { get; set; }}public class ColumnField{ public string Name { get; set; } public string Type { get; set; }}public class RowResult{ public List<string> Elements { get; set; }}

不幸的是,结果数据为空,我得到这个例外:

Unable to cast object of type ‘RestSharp.JsonArray’ to type
‘System.Collections.Generic.IDictionary`2[System.String,System.Object]’.

我不知道这里有什么问题.
我很少的帮助将不胜感激.

解决方法 尝试这个: var response = restClient.Execute<List<ReportResult>>(request);

编辑

您还应该将ReportResult更改为:

public class ReportResult{ public List<ColumnField> Columns { get; set; } public List<List<string>> Rows { get; set; }}

你可以摆脱Report和RowResult.