网络知识 娱乐 NET+EF+MVC开发接口输出json数据时定义实体类的嵌套用法

NET+EF+MVC开发接口输出json数据时定义实体类的嵌套用法

我们在用NET+EF+MVC开发接口的时候 ,尤其是get接口输出 json数据的时候,需要先定义实体类进行出输出 ,可能json数据分多层,外层,内层循环,内层单个实体类等,其实无论json数据有多少层,我们只要将实体类定义好层次就可以了。下边笔者给出一个简单的定义实体类的方法,供大家参考:

本例子通过get接口获取机器人的相关信息,json格式如下:



一、外层实体类,

public class M_bbw_host

{

/// <summary>

/// 子公司ID

/// </summary>

[JsonConverter(typeof(DecimalConvert))]

public Nullable<decimal> subsidiary_id { get; set; }

/// <summary>

/// 总部ID

/// </summary>

[JsonConverter(typeof(DecimalConvert))]

public decimal TrialID { get; set; }

/// <summary>

/// 幼儿园ID

/// </summary>

[JsonConverter(typeof(DecimalConvert))]

public decimal KindergartenID { get; set; }

/// <summary>

/// 幼儿园名称

/// </summary>

public string kindergartenName { get; set; }

/// <summary>

/// 自动开机时间

/// </summary>

public string up_time { get; set; }

/// <summary>

/// 自动关机时间

/// </summary>

public string close_time { get; set; }

/// <summary>

/// 识别方式 1:网络优先 2:仅在线识别 3:离线识别

/// </summary>

public Nullable<int> Recognition { get; set; }

/// <summary>

/// len值

/// </summary>

public double len { get; set; }

/// <summary>

/// 是否开启状态栏 0:未开启 1:开启(默认)

/// </summary>

public Nullable<int> isOpenStatusBar { get; set; }

/// <summary>

/// 是否开启调试 0:未开启(默认) 1:开启

/// </summary>

public Nullable<int> isDebug { get; set; }

/// <summary>

/// 考勤时间列表

/// </summary>

public List<Api_attendancetime> attendancetimelist { get; set; }

/// <summary>

/// 体质标准信息

/// </summary>

public List<M_basic_param> constitutionlist { get; set; }

/// <summary>

/// 入园时间

/// </summary>

// public string babyentertime { get; set; }

/// <summary>

/// 离园时间

/// </summary>

// public string babyleavetime { get; set; }

//教师工作时间对象

public M_teacher_worktime m_teacher_worktime { get; set; }

}

二、内嵌的列表类 public List<Api_attendancetime> attendancetimelist { get; set; }

[Serializable]

public class Api_attendancetime

{

/// <summary>

/// 类型 0:晨检 1:午检 2:晚检

/// </summary>

public int testingtype { get; set; }

/// <summary>

/// 提示文字

/// </summary>

public string message { get; set; }

/// <summary>

/// 开始日期

/// </summary>

public string StartDate { get; set; }

/// <summary>

/// 结束日期

/// </summary>

public string EndDate { get; set; }

}

[Serializable]

public class M_basic_param

{

/// <summary>

/// 0:体温 1:身高 2:体重

/// </summary>

public int type { get; set; }

/// <summary>

/// 标题

/// </summary>

public string title { get; set; }

/// <summary>

/// 性别 -1 :不分性别

/// </summary>

public int sex { get; set; }

/// <summary>

/// 最低年龄

/// </summary>

public int minAge { get; set; }

/// <summary>

/// 最高年龄

/// </summary>

public int maxAge { get; set; }

/// <summary>

/// 最低值

/// </summary>

public decimal lower_limit { get; set; }

/// <summary>

/// 最高值

/// </summary>

public decimal upper_limit { get; set; }


}

三、内嵌的 实体对象类 :public M_teacher_worktime m_teacher_worktime { get; set; }

[Serializable]

public class M_teacher_worktime

{

/// <summary>

/// 上班时间

/// </summary>

public string workstarttime { get; set; }

/// <summary>

/// 下班时间

/// </summary>

public string workendtime { get; set; }

/// 上班打卡开始时间

/// </summary>

public string startminrange { get; set; }

/// 上班打卡结束时间

/// </summary>

public string startmaxrange { get; set; }

/// 下班打卡开始时间

/// </summary>

public string endminrange { get; set; }

/// 下班打卡结束时间

/// </summary>

public string endmaxrange { get; set; }

}

四、通过get接口将数据填充到输出的实体类中生成json数据

M_bbw_host info = new M_bbw_host();

info.subsidiary_id = model.subsidiary_id;

info.TrialID = model.TrialID;

info.KindergartenID = model.KindergartenID;

info.kindergartenName = model.kindergarten;

M_teacher_worktime m_Teacher_Worktime = new M_teacher_worktime();

m_Teacher_Worktime.workstarttime = baby_m.workstarttime.Trim() + ":00";

m_Teacher_Worktime.workendtime = baby_m.workendtime.Trim() + ":00";

m_Teacher_Worktime.startminrange = baby_m.startminrange.Trim() + ":00";

m_Teacher_Worktime.startmaxrange = baby_m.startmaxrange.Trim() + ":00";

m_Teacher_Worktime.endminrange = baby_m.endminrange.Trim() + ":00";

m_Teacher_Worktime.endmaxrange = baby_m.endmaxrange.Trim() + ":00";

info.m_teacher_worktime = m_Teacher_Worktime;

List<Api_attendancetime> attendancetimelist = new WisdomStars.Bll.EF.SelectListByEF().GetbabyattendancetimeModel(model.KindergartenID, model.TrialID);

info.attendancetimelist = attendancetimelist;

List<M_basic_param> constitutionlist = new List<M_basic_param>();

List<hx_basic_param> basiclist = ef.hx_basic_param.AsNoTracking().ToList();

foreach(var item2 in basiclist)

{

M_basic_param info2 = new M_basic_param();

info2.type = item2.param_type;

info2.title = item2.basic_param_name;

//-1:未知 0:女 1:男

if (item2.sex == 1)

{

info2.sex = 1;

}

else if (item2.sex == 2)

{

info2.sex = 0;

}

else

{

info2.sex = -1;

}

info2.minAge = (int)item2.agestart;

info2.maxAge = (int)item2.ageend;

info2.lower_limit = item2.lower_limit;

info2.upper_limit = item2.upper_limit;

constitutionlist.Add(info2);

}

info.constitutionlist = constitutionlist;

ReturnStr = "{"status":"Y","msg":"获取成功","data":" + info.ToEnJsonString() + "}";

result = new HttpResponseMessage { Content = new StringContent(ReturnStr, Encoding.GetEncoding("UTF-8"), "application/json") };

return result;