我们在用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;