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