[英]How to convert Json string to c# Class object?
我在Controller中收到json字符串,现在我想将该字符串映射到C#类对象我该怎么做?
JSON:
[{ “PDID”:NULL, “StName”: “435”, “出生日期”: “2015-05-02T17:09:35.974Z”, “性别”: “5435”},{ “PDID”:NULL,” StName “:” 4343" , “出生日期”: “2015-05-02T17:09:35.974Z”, “性别”: “4345”}]`
我的课:
public class PersonDetail
{
public int PdID { get; set; }
public int PolicyPurchesID { get; set; }
public string StName { get; set; }
public DateTime DOB { get; set; }
public byte Gender { get; set; }
}
现在在我的控制器中,我这样做: -
public ActionResult PolicyDetailAdd(string jsn)
{
try
{
JavaScriptSerializer objJavascript = new JavaScriptSerializer();
PersonDetail testModels = (PersonDetail)objJavascript.DeserializeObject(jsn);
return null;
}
}
我在这方面有例外:
无法将类型为System.Object []的对象强制转换为WebApplication1.Models.PersonDetail。
如何将此字符串转换为列表对象?
发生此错误的原因是您尝试将集合反序列化为对象。 您还使用通用Object
。 你需要使用
List<PersonDetail> personDetails = objJavascript.Deserialize<List<PersonDetail>>(jsn);
你有两个问题。 @Praveen Paulose对第一个错误是正确的。 但是相对于JSON,对象定义也是不正确的。
首先,PdId需要处理null:
public class PersonDetail
{
public int? PdID { get; set; }
public int PolicyPurchesID { get; set; }
public string StName { get; set; }
public System.DateTime DOB { get; set; }
public byte Gender { get; set; }
}
其次,正如@Praveen所提到的,JSON正在返回一个数组,所以你需要处理它。
JavaScriptSerializer objJavascript = new JavaScriptSerializer();
var testModels = objJavascript.DeserializeObject<ICollection<PersonDetail>>(jsn);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.