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