NET+EF+MVC開發介面輸出json資料時定義實體類的巢狀用法
我們在用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;