我们在用NET+EF+MVC开发接口的时候 ,尤其是get接口输出 json数据的时候,需要先定义实体类进行出输出 ,可能json数据分多层,外层,内层循环,内层单个实体类等,其实无论json数据有多少层,我们只要将实体类定义好层次就可以了。下边笔者给出一个简单的定义实体类的方法,供大家参考:
本例子通过get接口获取机器人的相关信息,json格式如下:
一、外层实体类,
public class M_bbw_host
{
///
/// 子公司ID
///
[JsonConverter(typeof(DecimalConvert))]
public Nullable
///
/// 总部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
///
/// len值
///
public double len { get; set; }
///
/// 是否开启状态栏 0:未开启 1:开启(默认)
///
public Nullable
///
/// 是否开启调试 0:未开启(默认) 1:开启
///
public Nullable
///
/// 考勤时间列表
///
public List
///
/// 体质标准信息
///
public List
///
/// 入园时间
///
// public string babyentertime { get; set; }
///
/// 离园时间
///
// public string babyleavetime { get; set; }
//教师工作时间对象
public M_teacher_worktime m_teacher_worktime { get; set; }
}
二、内嵌的列表类 public List
[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
info.attendancetimelist = attendancetimelist;
List
List
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 条评论) “” |