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