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字符的格式,再定义对象类,最后转换