簡體   English   中英

RestSharp JSON 數組反序列化

[英]RestSharp JSON Array deserialization

我以 JSON 格式啟動這個 RestSharp 查詢:

var response = restClient.Execute<Report>(request);

我得到的響應包含這些數據

[
    {
        "Columns":
        [
            {"Name":"CameraGuid","Type":"Guid"},
            {"Name":"ArchiveSourceGuid","Type":"Guid"},
            {"Name":"StartTime","Type":"DateTime"},
            {"Name":"EndTime","Type":"DateTime"},
            {"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; }
}

不幸的是,結果數據為空,我得到這個異常:

無法將“RestSharp.JsonArray”類型的對象轉換為“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; }
}

你可以擺脫ReportRowResult

通過創建包裝類還有另一種方法:

public class ThirdPartySuggesters : List<ThirdPartySuggester> {}
var response = client.Execute<ThirdPartySuggesters>(request);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM