using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; namespace Report.Net5.ConsoleTest { class Program { public static T DeserializeObject(string data) where T : class { var obj = JsonConvert.DeserializeObject(data); return obj; } public static string SerializeObject(object data) { string str = JsonConvert.SerializeObject(data); return str; } static void Main(string[] args) { Console.WriteLine("Hello World!"); zydjsontest(); Console.WriteLine("Hello World!"); } static void zydjsontest() { string str = @"{ 'patientRegisterId': '3a0c7f6e-3ff1-fef6-c568-6f541aabe87a', 'patientRegisterNo': '202307190001', 'patientName': '李晓阳 7', 'sexName': '未知', 'age': 46, 'idNo': '', 'mobileTelephone': '13800138000', 'patientNo': '6', 'medicalTimes': 1, 'jobCardNo': '', 'medicalCardNo': '', 'customerOrgName': '个人体检', 'departmentName': '个人体检', 'customerOrgGroupName': null, 'medicalPackageName': null, 'personnelTypeName': null, 'medicalCenterAddress': '', 'medicalCenterTelphone': '', 'medicalCenterFax': '', 'detail': [ { 'guideName': '检验项目', 'displayOrder': 1, 'detail_Name': [ { 'asbitemName': '血常规', 'asbitemGuide': '1号楼2层采血窗口', 'displayOrder': 30 } ] }, { 'guideName': '一般检查', 'displayOrder': 2, 'detail_Name': [ { 'asbitemName': '血压', 'asbitemGuide': '1号楼2-202', 'displayOrder': 6 }, { 'asbitemName': '身高体重', 'asbitemGuide': '1号楼2-201', 'displayOrder': 22 } ] }, { 'guideName': '功能检查', 'displayOrder': 3, 'detail_Name': [ { 'asbitemName': '腰椎正位片', 'asbitemGuide': '1号楼3层放射科', 'displayOrder': 15 }, { 'asbitemName': '胸部正位片', 'asbitemGuide': '1号楼3层放射科', 'displayOrder': 17 } ] } ] }"; zyd dj = DeserializeObject(str); patientinfo pat = new patientinfo() { patientRegisterId = dj.patientRegisterId, patientRegisterNo = dj.patientRegisterNo, patientName = dj.patientName, sexName = dj.sexName, age = dj.age, idNo = dj.idNo, mobileTelephone = dj.mobileTelephone, patientNo = dj.patientNo, medicalTimes = dj.medicalTimes, jobCardNo = dj.jobCardNo, medicalCardNo = dj.medicalCardNo, customerOrgName = dj.customerOrgName, departmentName = dj.departmentName, customerOrgGroupName = dj.customerOrgGroupName, medicalPackageName = dj.medicalPackageName, personnelTypeName = dj.personnelTypeName, medicalCenterAddress = dj.medicalCenterAddress, medicalCenterTelphone = dj.medicalCenterTelphone, medicalCenterFax = dj.medicalCenterFax }; List plist = new List(); plist.Add(pat); List glist = new List(); List alist = new List(); foreach (var item in dj.detail) { guide ig = new guide() { guideName = item.guideName, displayOrder = item.displayOrder }; foreach (var d1 in item.detail_Name) { asbitem asb = new asbitem() { guideName = ig.guideName, asbitemGuide = d1.asbitemGuide, asbitemName = d1.asbitemName, displayOrder = d1.displayOrder }; alist.Add(asb); } glist.Add(ig); } List dlist = new List(); foreach (var item in plist) dlist.Add(item); foreach (var item in glist) dlist.Add(item); foreach (var item in alist) dlist.Add(item); JsonClsEx ex = new JsonClsEx() { ReportCode = "001", token = "1223423423", ReportTable = dlist }; string a6 = SerializeObject(ex); JsonClsEx ee = DeserializeObject(a6); DataSet ds = ConvertToDataSet(ee.ReportTable); FastReport.Report report = new FastReport.Report(); report.RegisterData(ds); report.Prepare(); } public static DataSet ConvertToDataSet(IList list) { if (list == null || list.Count <= 0) { return null; } DataSet ds = new DataSet(); DataTable dt = new DataTable(typeof(T).Name); DataColumn column; DataRow row; System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); foreach (T t in list) { if (t == null) { continue; } row = dt.NewRow(); for (int i = 0, j = myPropertyInfo.Length; i < j; i++) { System.Reflection.PropertyInfo pi = myPropertyInfo[i]; string name = pi.Name; if (dt.Columns[name] == null) { column = new DataColumn(name, pi.PropertyType); dt.Columns.Add(column); } row[name] = pi.GetValue(t, null); } dt.Rows.Add(row); } ds.Tables.Add(dt); return ds; } } }