繁体   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