如何将json的字符串数据转换成对象

1.页面上需要传递的json字符串:

var jsonStr = '[{"RoomNum":"2","Person":[{"Id":"1_0","RoomNo":1,"Name":"SANZHANG"},{"Id":"1_1","RoomNo":1,"Name":"SILI"},{"Id":"2_0","RoomNo":2,"Name":"WUWANG"},{"Id":"2_1","RoomNo":2,"Name":"LIUCHE"}]}]';

 格式:

[
    {
        "RoomNum": "2",
        "Person": [
            {
                "Id": "1_0",
                "RoomNo": 1,
                "Name": "SANZHANG"
            },
            {
                "Id": "1_1",
                "RoomNo": 1,
                "Name": "SILI"
            },
            {
                "Id": "2_0",
                "RoomNo": 2,
                "Name": "WUWANG"
            },
            {
                "Id": "2_1",
                "RoomNo": 2,
                "Name": "LIUCHE"
            }
        ]
    }
]

2.在控制器上实现将json字符串转对象:

   1).根据json字符串的特点进行定义对象属性(这里定义两个类:RoomPerson.cs和Person.cs)

public class RoomPerson
{
    /// <summary>
    /// 房间总数
    /// </summary>
    public int RoomNum { get; set; }
    /// <summary>
    /// 客人列表数据
    /// </summary>
    public IList<Person> PersonList { get; set; }
}


public class Person
{
    /// <summary>
    /// 客人Id(格式:n_m)
    /// </summary>
    public string Id { get; set; }
    /// <summary>
    /// 客人房间号
    /// </summary>
    public int RoomNo { get; set; }
    /// <summary>
    /// 客人姓名
    /// </summary>
    public string Name { get; set; }
}

  2).进行转换

List<RoomPerson> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RoomPerson>>(jsonStr);

如果json的字符串数据不是前面那种情况的话,该如何去定义对象类呢?下面继续给出另一种例子

1.json字符串数据:

var jsonStr = '[{"RowId":1,"Template":"HotelTemplateOne","TemplateId":"1","CheckInDte":"2019-05-06","CheckOutDte":"2019-05-10"},{"RowId":2,"Template":"HotelTemplateTwo","TemplateId":"1","CheckInDte":"2019-05-13","CheckOutDte":"2019-05-17"}]';

格式:

[
    {
        "RowId": 1,
        "Template": "HotelTemplateOne",
        "TemplateId": "1",
        "CheckInDte": "2019-05-06",
        "CheckOutDte": "2019-05-10"
    },
    {
        "RowId": 2,
        "Template": "HotelTemplateTwo",
        "TemplateId": "1",
        "CheckInDte": "2019-05-13",
        "CheckOutDte": "2019-05-17"
    }
]

2.定义RowData.cs类

    /// <summary>
    /// 行的数据属性
    /// </summary>
    public class RowData
    {
        /// <summary>
        /// 行的序号
        /// </summary>
        public int RowId { get; set; }
        /// <summary>
        /// 模板
        /// </summary>
        public string Template { get; set; }
        /// <summary>
        /// 信息模板Id
        /// </summary>
        public int TemplateId { get; set; }
        /// <summary>
        /// 入住日期
        /// </summary>
        public string CheckInDte { get; set; }
        /// <summary>
        /// 离开日期
        /// </summary>
        public string CheckOutDte { get; set; }
    }

3.转换

IList<RowData> list = Newtonsoft.Json.JsonConvert.DeserializeObject<IList<RowData>>(jsonStr);

总结:json字符串转换成对象时,先看json字符的格式,再定义对象类,最后转换

发布了13 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_35481871/article/details/90054616