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

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

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



一、外层实体类,

public class M_bbw_host

{

///

/// 子公司ID

///

[JsonConverter(typeof(DecimalConvert))]

public Nullable subsidiary_id { get; set; }

///

/// 总部ID

///

[JsonConverter(typeof(DecimalConvert))]

public decimal TrialID { get; set; }

///

/// 幼儿园ID

///

[JsonConverter(typeof(DecimalConvert))]

public decimal KindergartenID { get; set; }

///

/// 幼儿园名称

///

public string kindergartenName { get; set; }

///

/// 自动开机时间

///

public string up_time { get; set; }

///

/// 自动关机时间

///

public string close_time { get; set; }

///

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

///

public Nullable Recognition { get; set; }

///

/// len值

///

public double len { get; set; }

///

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

///

public Nullable isOpenStatusBar { get; set; }

///

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

///

public Nullable isDebug { get; set; }

///

/// 考勤时间列表

///

public List attendancetimelist { get; set; }

///

/// 体质标准信息

///

public List constitutionlist { get; set; }

///

/// 入园时间

///

// public string babyentertime { get; set; }

///

/// 离园时间

///

// public string babyleavetime { get; set; }

//教师工作时间对象

public M_teacher_worktime m_teacher_worktime { get; set; }

}

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

[Serializable]

public class Api_attendancetime

{

///

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

///

public int testingtype { get; set; }

///

/// 提示文字

///

public string message { get; set; }

///

/// 开始日期

///

public string StartDate { get; set; }

///

/// 结束日期

///

public string EndDate { get; set; }

}

[Serializable]

public class M_basic_param

{

///

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

///

public int type { get; set; }

///

/// 标题

///

public string title { get; set; }

///

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

///

public int sex { get; set; }

///

/// 最低年龄

///

public int minAge { get; set; }

///

/// 最高年龄

///

public int maxAge { get; set; }

///

/// 最低值

///

public decimal lower_limit { get; set; }

///

/// 最高值

///

public decimal upper_limit { get; set; }


}

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

[Serializable]

public class M_teacher_worktime

{

///

/// 上班时间

///

public string workstarttime { get; set; }

///

/// 下班时间

///

public string workendtime { get; set; }

/// 上班打卡开始时间

///

public string startminrange { get; set; }

/// 上班打卡结束时间

///

public string startmaxrange { get; set; }

/// 下班打卡开始时间

///

public string endminrange { get; set; }

/// 下班打卡结束时间

///

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 attendancetimelist = new WisdomStars.Bll.EF.SelectListByEF().GetbabyattendancetimeModel(model.KindergartenID, model.TrialID);

info.attendancetimelist = attendancetimelist;

List constitutionlist = new List();

List 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;


发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章