[英]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.