簡體   English   中英

帶有 2 個數組的 RestSharp 反序列化

[英]RestSharp deserialization with 2 arrays

我有一個 json 響應,我試圖用 RestSharp 反序列化它是這樣的

[{"cname":"APPLICANT NAME","dob":"01-01-1997","gender":"2","msg":"Ok","msgcode":"0"},
{"results":
[{"subjectcode":"214","subject":"SOCIAL STUDIES","grade":"C5"},
{"subjectcode":"302","subject":"ENGLISH LANG","grade":"C5"},
{"subjectcode":"402","subject":"MATHEMATICS(CORE)","grade":"E8"},
{"subjectcode":"517","subject":"INTEGRATED SCIENCE","grade":"D7"},
{"subjectcode":"203","subject":"ECONOMICS","grade":"D7"},
{"subjectcode":"204","subject":"GEOGRAPHY","grade":"B3"},
{"subjectcode":"205","subject":"GOVERNMENT","grade":"C6"},
{"subjectcode":"207","subject":"HISTORY","grade":"B3"}]
}]

我創建了這些類來幫助我序列化

public class Result
{
    public string subjectcode { get; set; }
    public string subject { get; set; }
    public string grade { get; set; }
}

public class StudentDetail
{
    public string cname { get; set; }
    public string dob { get; set; }
    public string gender { get; set; }
    public string msg { get; set; }
    public string msgcode { get; set; }
    public List<Result> results { get; set; }
}

public class VerifyData
{
    public List<StudentDetail> StudentDetails { get; set; }
}

但是,每當我嘗試使用 RestSharp 反序列化時

IRestResponse response = client.Execute<VerifyData>(request);

我收到以下錯誤消息:

{“無法將類型為 'RestSharp.JsonArray' 的對象轉換為類型 'System.Collections.Generic.IDictionary`2[System.String,System.Object]'。”}

任何指針,都搜索過類似的問題,但無法解決這個問題。 謝謝

Json 數據現在是

[{"cname":"APPLICANT NAME","dob":"01-01-1997","gender":"2","msg":"Ok","msgcode":"0",
"results":
[{"subjectcode":"214","subject":"SOCIAL STUDIES","grade":"C5"},
{"subjectcode":"302","subject":"ENGLISH LANG","grade":"C5"},
{"subjectcode":"402","subject":"MATHEMATICS(CORE)","grade":"E8"},
{"subjectcode":"517","subject":"INTEGRATED SCIENCE","grade":"D7"},
{"subjectcode":"203","subject":"ECONOMICS","grade":"D7"},
{"subjectcode":"204","subject":"GEOGRAPHY","grade":"B3"},
{"subjectcode":"205","subject":"GOVERNMENT","grade":"C6"},
{"subjectcode":"207","subject":"HISTORY","grade":"B3"}]
}]

您不需要額外的類VerifyData 您需要的是以下內容:

var studentDetails = client.Execute<StudentDetail>(request).Data;

或分兩步:

var response = client.Execute<StudentDetail>(request);
var studentDetails = response.Data;

更新

使用JsonConvert (Json.NET),如果您定義了以下類:

public class Result
{
    [JsonProperty("subjectcode")]
    public string Subjectcode { get; set; }

    [JsonProperty("subject")]
    public string Subject { get; set; }

    [JsonProperty("grade")]
    public string Grade { get; set; }
}

public class StudentDetail
{
    [JsonProperty("cname")]
    public string Cname { get; set; }

    [JsonProperty("dob")]
    public string Dob { get; set; }

    [JsonProperty("gender")]
    public string Gender { get; set; }

    [JsonProperty("msg")]
    public string Msg { get; set; }

    [JsonProperty("msgcode")]
    public string Msgcode { get; set; }

    [JsonProperty("results")]
    public IList<Result> Results { get; set; }
}

您可以嘗試以下方法:

JsonConvert.Deserialize<StudentDetail>(json)

暫無
暫無

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

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