如何将 Json 字符串转换为 c# Class 对象?
How to convert Json string to c# Class object?
我在 Controller 中收到了 json 字符串,现在我想将该字符串映射到 C# class 对象
我该怎么做?
JSON:
[{"PdID":null,"StName":"435","DOB":"2015-05-02T17:09:35.974Z","Gender":"5435"},{"PdID":null,"StName":"4343","DOB":"2015-05-02T17:09:35.974Z","Gender":"4345"}]`
我的class:
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;
}
}
我遇到了异常:
Unable to cast object of type System.Object[] to type 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);
我在 Controller 中收到了 json 字符串,现在我想将该字符串映射到 C# class 对象 我该怎么做?
JSON:
[{"PdID":null,"StName":"435","DOB":"2015-05-02T17:09:35.974Z","Gender":"5435"},{"PdID":null,"StName":"4343","DOB":"2015-05-02T17:09:35.974Z","Gender":"4345"}]`
我的class:
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;
}
}
我遇到了异常:
Unable to cast object of type System.Object[] to type 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);