簡體   English   中英

如何將Json字符串轉換為c#類對象?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM